O Pandas fornece vários métodos para filtrar dados, incluindo reindex(), apply() e map() . No entanto, ao aplicar vários filtros, a eficiência se torna uma preocupação.
Para uma filtragem otimizada, considere a utilização de indexação booleana. Tanto o Pandas quanto o Numpy suportam indexação booleana, que opera diretamente na matriz de dados subjacente sem criar cópias desnecessárias.
Aqui está um exemplo de indexação booleana:
df.loc[df['col1'] >= 1, 'col1']
Esta expressão retorna uma série Pandas contendo apenas as linhas onde os valores na coluna 'col1' são maiores ou iguais a 1.
Para aplique vários filtros, use os operadores lógicos '&' (AND) e '|' (OU). Por exemplo:
df[(df['col1'] >= 1) & (df['col1'] <=1 )]
Esta expressão retorna um DataFrame contendo apenas as linhas onde os valores na coluna 'col1' estão entre 1 e 1 inclusive.
For funções auxiliares, considere definir funções que usam um DataFrame e retornam uma série booleana, permitindo combinar vários filtros usando operadores lógicos.
def b(x, col, op, n):
return op(x[col],n)
def f(x, *b):
return x[(np.logical_and(*b))]
Pandas 0.13 introduz o método query(), que fornece uma maneira mais eficiente de expressar condições de filtragem complexas. Assumindo identificadores de coluna válidos, o código a seguir filtra o DataFrame df com base em várias condições:
df.query('col1 <= 1 & 1 <= col1')
Em resumo, a indexação booleana oferece um método eficiente para aplicar vários filtros a DataFrames ou séries do Pandas sem criar cópias desnecessárias. Use operadores lógicos e funções auxiliares para combinar vários filtros para funcionalidade estendida.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3