Consulta las columnas de un DataFrame con una expresión booleana.
- Parámetros
-
- expr : str
-
La consulta string para evaluar.
Puede hacer referencia a las variables en el entorno prefijándolas con un carácter ‘@’ como @a+b
.
Puede hacer referencia a nombres de columnas que no son nombres de variables de Python válidos rodeándolos con comillas invertidas. Por lo tanto, los nombres de columna que contienen espacios o signos de puntuación (además de guiones bajos) o que comienzan con dígitos deben estar rodeados de comillas invertidas. (Por ejemplo, una columna denominada “Área (cm ^ 2) se referenciaría como Área (cm ^ 2)). Los nombres de columna que son palabras clave de Python (como “lista”, “para”, “importación”, etc.) no se pueden utilizar.
Por ejemplo, si una de sus columnas se llama aa
y quieres resumirlo con b
, tu consulta debe ser `aa`+b
.
Nuevo en la versión 0.25.0: Se introdujeron las citas con comillas invertidas.
Nuevo en la versión 1.0.0: Ampliando la funcionalidad de las comillas con comillas invertidas para más que solo espacios.
- en su lugar : bool
-
Si la consulta debe modificar los datos en su lugar o devolver una copia modificada.
- ** kwargs
-
Consulte la documentación para eval()
para obtener detalles completos sobre los argumentos de palabras clave aceptados por DataFrame.query()
.
- Devoluciones
-
- DataFrame o Ninguno
-
DataFrame resultante de la expresión de consulta proporcionada o None si inplace=True
.
Ver también
eval
-
Evaluar un string describiendo operaciones en columnas DataFrame.
DataFrame.eval
-
Evaluar un string describiendo operaciones en columnas DataFrame.
Notas
El resultado de la evaluación de esta expresión se pasa primero a DataFrame.loc
y si eso falla por un multidimensional key (por ejemplo, un DataFrame), el resultado se pasará a DataFrame.__getitem__()
.
Este método utiliza el nivel superior eval()
función para evaluar la consulta pasada.
los query()
El método usa una sintaxis de Python ligeramente modificada por defecto. Por ejemplo, el &
y |
Los operadores (bit a bit) tienen la precedencia de sus primos booleanos, and
y or
. Esta es Python sintácticamente válido, sin embargo, la semántica es diferente.
Puede cambiar la semántica de la expresión pasando el argumento de palabra clave parser='python'
. Esto aplica la misma semántica que la evaluación en el espacio de Python. Asimismo, puedes pasar engine='python'
para evaluar una expresión utilizando Python como backend. Esto no se recomienda ya que es ineficaz en comparación con el uso numexpr
como el motor.
los DataFrame.index
y DataFrame.columns
attributes de El DataFrame
Las instancias se colocan en el espacio de nombres de la consulta de forma predeterminada, lo que le permite tratar tanto el índice como las columnas del marco como una columna en el marco. El identificador index
se utiliza para el índice de fotogramas; también puede utilizar el nombre del índice para identificarlo en una consulta. Tenga en cuenta que las palabras clave de Python no se pueden utilizar como identificadores.
Para obtener más detalles y ejemplos, consulte la query
documentación en indexación.
Variables entre comillas con tilde invertido
Las variables con comillas invertidas se analizan como código literal de Python y se convierten internamente en un identificador válido de Python. Esto puede provocar los siguientes problemas.
Durante el análisis de una serie de caracteres no permitidos dentro de la comilla invertida citada string se reemplazan por cadenas que están permitidas como identificador de Python. Estos caracteres incluyen todos los operadores en Python, el carácter de espacio, el signo de interrogación, el signo de exclamación, el signo de dólar y el signo de euro. Para otros caracteres que caen fuera del rango ASCII (U + 0001..U + 007F) y aquellos que no se especifican más en PEP 3131, el analizador de consultas generará un error. Esto excluye los espacios en blanco diferentes al carácter de espacio, pero también el hashtag (como se usa para los comentarios) y la comilla invertida en sí (la comilla invertida tampoco se puede escapar).
En un caso especial, las comillas que forman un par alrededor de una tilde pueden confundir al analizador. Por ejemplo, `it's`>`that's`
generará un error, ya que forma una cita string ('s>`that'
) con una tilde al revés en el interior.
Consulte también la documentación de Python sobre análisis léxico (https://docs.python.org/3/reference/lexical_analysis.html) en combinación con el código fuente en pandas.core.computation.parsing
.
Ejemplos de
>>> df = pd.DataFrame('A':range(1,6),...'B':range(10,0,-2),...'C C':range(10,5,-1))>>> df
A B C C
0110101289236834474526>>> df.query('A > B')
A B C C
4526
La expresión anterior es equivalente a
>>> df[df.A > df.B]
A B C C
4526
Para columnas con espacios en su nombre, puede usar comillas de comillas invertidas.
>>> df.query('B == `C C`')
A B C C
011010
La expresión anterior es equivalente a
>>> df[df.B == df['C C']]
A B C C
011010