Función Pandas DataFrame DataFrame.query()

Suraj Joshi 30 enero 2023
  1. La sintaxis de pandas.DataFrame.query():
  2. Códigos de ejemplo: DataFrame.query() Método con una sola condición
  3. Códigos de ejemplo: DataFrame.query() Método cuando el nombre de la columna tiene un espacio en blanco
  4. Códigos de ejemplo: DataFrame.query() Método con múltiples condiciones
Función Pandas DataFrame DataFrame.query()

El método pandas.DataFrame.query() filtra las filas del llamador DataFrame utilizando la expresión de consulta dada.

La sintaxis de pandas.DataFrame.query():

DataFrame.query(expr, inplace=False, **kwargs)

Parámetros

expr Expresión de consulta basada en la cual se filtran las filas
inplace Booleana. Si es True, modifica la llamada DataFrame en su lugar.
**kwargs Argumentos de palabras clave para el método

Retorna

Si inplace es True, devuelve el DataFrame filtrado; de lo contrario None.

Códigos de ejemplo: DataFrame.query() Método con una sola condición

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame:")
print(df)

filtered_df=df.query('X>1')
print("Filtered DataFrame:")
print(filtered_df)

Resultado:

Original DataFrame:
   X  Y
0  1  4
1  2  1
2  3  8
Filtered DataFrame:
   X  Y
1  2  1
2  3  8

Devuelve el DataFrame con sólo las filas que satisfacen la expresión de consulta dada, es decir, sólo las filas cuyo valor en la columna X es mayor que 1.

Códigos de ejemplo: DataFrame.query() Método cuando el nombre de la columna tiene un espacio en blanco

Debemos asegurarnos de que los nombres de las columnas a consultar no tengan espacios en blanco antes de aplicar este método a DataFrame.

Si tenemos nombres de columna con espacios en ellos, podríamos usar las comillas de retroceso (`).

import pandas as pd

df = pd.DataFrame(
    {
        "X": [
            1,
            2,
            3,
        ],
        "Y": [4, 1, 8],
        "A B": [3, 5, 7],
    }
)
print("Original DataFrame:")
print(df)
filtered_df = df.query("`A B`>5")
print("Filtered DataFrame:")
print(filtered_df)

Resultado:

Original DataFrame:
   X  Y  A B
0  1  4    3
1  2  1    5
2  3  8    7
Filtered DataFrame:
   X  Y  A B
2  3  8    7

Aquí, la columna A B tiene un espacio en su nombre. Para hacer una expresión de consulta para la columna, encerramos el nombre de la columna en los backticks; de lo contrario, se producirá un error.

Códigos de ejemplo: DataFrame.query() Método con múltiples condiciones

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame:")
print(df)

filtered_df=df.query('X>1' and 'Y==1')
print("Filtered DataFrame:")
print(filtered_df)

Resultado:

Original DataFrame:
   X  Y
0  1  4
1  2  1
2  3  8
Filtered DataFrame:
   X  Y
1  2  1

Si deseamos filtrar DataFrame basado en múltiples condiciones, combinamos las múltiples expresiones de consulta usando el operador and para hacer una única expresión de consulta compuesta.

Da el DataFrame con filas cuyo valor de la columna X es mayor que 1, y el valor de la columna Y es igual a 1.

Podemos modificar el DataFrame original después de llamar al método query() estableciendo inplace=True.

import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
filtered_df=df.query('X>1' and 'Y==1',inplace=True)
print(df)

Resultado:

   X  Y
1  2  1
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Pandas DataFrame