query(expr, inplace=False, **kwargs)¶
Query the columns of a frame with a boolean expression.
New in version 0.13.
expr : string
The query string to evaluate. You can refer to variables in the environment by prefixing them with an ‘@’ character like
@a + b.
inplace : bool
Whether the query should modify the data in place or return a modified copy
New in version 0.18.0.
kwargs : dict
q : DataFrame
The result of the evaluation of this expression is first passed to
DataFrame.locand if that fails because of a multidimensional key (e.g., a DataFrame) then the result will be passed to
This method uses the top-level
pandas.eval()function to evaluate the passed query.
query()method uses a slightly modified Python syntax by default. For example, the
|(bitwise) operators have the precedence of their boolean cousins,
or. This is syntactically valid Python, however the semantics are different.
You can change the semantics of the expression by passing the keyword argument
parser='python'. This enforces the same semantics as evaluation in Python space. Likewise, you can pass
engine='python'to evaluate an expression using Python itself as a backend. This is not recommended as it is inefficient compared to using
numexpras the engine.
DataFrame.columnsattributes of the
DataFrameinstance are placed in the query namespace by default, which allows you to treat both the index and columns of the frame as a column in the frame. The identifier
indexis used for the frame index; you can also use the name of the index to identify it in a query.
For further details and examples see the
querydocumentation in indexing.
>>> from numpy.random import randn >>> from pandas import DataFrame >>> df = DataFrame(randn(10, 2), columns=list('ab')) >>> df.query('a > b') >>> df[df.a > df.b] # same result as the previous expression