Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Filtrar linhas multiplo de 6 pelo indice

Ola!

Alguem sabe me dizer como filtro o as linhas de uma tabela pelo numero do indice multiplo de um valor inteiro?

No momento estou assim:

import pandas as pd lista_pacientes = pd.read_table('AMBULA.TXT',encoding='latin-1') lista_pacientes = pd.DataFrame(lista_pacientes)

lista_pacientes = lista_pacientes.iloc[[i for i in range(1639) if i == i * 6]]

Nao estou conseguindo definir o filtro do indice para os numeros multiplos de 6

alguem da uma forca, por favor?

1 resposta
solução!

Boas Shiro! Tudo bem? Espero que sim!

Há uma forma bastante elegante de resolver esse problema. Vou demonstrar usando a função pq.query(), o operador mod (ou resto de uma divisão exata) e o index.

Para demonstrar, vou usar uma base de dados que encontrei sobre sistemas operacionais mais populares. Vamos ao código:

dados = pd.read_csv('https://raw.githubusercontent.com/pedrohcmds/alura_testes/main/os%20(1).csv')
dados.head()
datenamevalue
02003-03-01Mac1.8
12003-03-01Linux2.2
22003-03-01Win950.8
32003-03-01WinNT6.6
42003-03-01Win9814.8

Como não temos um indexador externo para os dados, vamos criar um através da função dados.reset_index(inplace=True), que retorna:

indexdatenamevalue
002003-03-01Mac1.8
112003-03-01Linux2.2
222003-03-01Win950.8
332003-03-01WinNT6.6
442003-03-01Win9814.8

Agora, vamos fazer a seleção dos índices múltiplos de 6. Para isso vamos usar o operador % que nos retorna o resto de uma divisão exata.

Se usarmos index % 6, ele nos retornará 0 apenas quando o número for múltiplo de 6. É essa lógica que vamos aplicar:

dados.query('index%6 == 0')

Que nos retorna:

indexdatenamevalue
002003-03-01Mac1.8
662003-03-01WinXP29.1
12122003-05-01Win200041
18182003-07-01Win9812.6
24242003-09-01WinNT4.1

Assim, temos apenas as observações que são múltiplas de 6.

Espero ter ajudado. Bons estudos!