Pandas proporciona varios métodos para filtrar datos, incluidos reindex(), apply() y map() . Sin embargo, cuando se aplican varios filtros, la eficiencia se convierte en una preocupación.
Para un filtrado optimizado, considere utilizar la indexación booleana. Tanto Pandas como Numpy admiten la indexación booleana, que opera directamente en la matriz de datos subyacente sin crear copias innecesarias.
Aquí hay un ejemplo de indexación booleana:
df.loc[df['col1'] >= 1, 'col1']
Esta expresión devuelve una serie Pandas que contiene solo las filas donde los valores de la columna 'col1' son mayores o iguales a 1.
Para aplique múltiples filtros, use los operadores lógicos '&' (Y) y '|' (O). Por ejemplo:
df[(df['col1'] >= 1) & (df['col1'] <=1 )]
Esta expresión devuelve un DataFrame que contiene solo las filas donde los valores de la columna 'col1' están entre 1 y 1 inclusive.
Para funciones auxiliares, considere definir funciones que tomen un DataFrame y devuelvan una serie booleana, lo que le permitirá combinar múltiples 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 introduce el método query(), que proporciona una forma más eficiente de expresar condiciones de filtrado complejas. Suponiendo identificadores de columna válidos, el siguiente código filtra DataFrame df según múltiples condiciones:
df.query('col1 <= 1 & 1 <= col1')
En resumen, la indexación booleana ofrece un método eficiente para aplicar múltiples filtros a Pandas DataFrames o Series sin crear copias innecesarias. Utilice operadores lógicos y funciones auxiliares para combinar varios filtros y obtener una funcionalidad ampliada.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3