pandas.eval — pandas 2.2.3 documentation (original) (raw)

pandas.eval(expr, parser='pandas', engine=None, local_dict=None, global_dict=None, resolvers=(), level=0, target=None, inplace=False)[source]#

Evaluate a Python expression as a string using various backends.

The following arithmetic operations are supported: +, -, *,/, **, %, // (python engine only) along with the following boolean operations: | (or), & (and), and ~ (not). Additionally, the 'pandas' parser allows the use of and,or, and not with the same semantics as the corresponding bitwise operators. Series andDataFrame objects are supported and behave as they would with plain ol’ Python evaluation.

Parameters:

exprstr

The expression to evaluate. This string cannot contain any Pythonstatements, only Python expressions.

parser{‘pandas’, ‘python’}, default ‘pandas’

The parser to use to construct the syntax tree from the expression. The default of 'pandas' parses code slightly different than standard Python. Alternatively, you can parse an expression using the'python' parser to retain strict Python semantics. See theenhancing performance documentation for more details.

engine{‘python’, ‘numexpr’}, default ‘numexpr’

The engine used to evaluate the expression. Supported engines are

More backends may be available in the future.

local_dictdict or None, optional

A dictionary of local variables, taken from locals() by default.

global_dictdict or None, optional

A dictionary of global variables, taken from globals() by default.

resolverslist of dict-like or None, optional

A list of objects implementing the __getitem__ special method that you can use to inject an additional collection of namespaces to use for variable lookup. For example, this is used in thequery() method to inject theDataFrame.index and DataFrame.columnsvariables that refer to their respective DataFrameinstance attributes.

levelint, optional

The number of prior stack frames to traverse and add to the current scope. Most users will not need to change this parameter.

targetobject, optional, default None

This is the target object for assignment. It is used when there is variable assignment in the expression. If so, then target must support item assignment with string keys, and if a copy is being returned, it must also support .copy().

inplacebool, default False

If target is provided, and the expression mutates target, whether to modify target inplace. Otherwise, return a copy of target with the mutation.

Returns:

ndarray, numeric scalar, DataFrame, Series, or None

The completion value of evaluating the given code or None if inplace=True.

Raises:

ValueError

There are many instances where such an error can be raised:

See also

DataFrame.query

Evaluates a boolean expression to query the columns of a frame.

DataFrame.eval

Evaluate a string describing operations on DataFrame columns.

Notes

The dtype of any objects involved in an arithmetic % operation are recursively cast to float64.

See the enhancing performance documentation for more details.

Examples

df = pd.DataFrame({"animal": ["dog", "pig"], "age": [10, 20]}) df animal age 0 dog 10 1 pig 20

We can add a new column using pd.eval:

pd.eval("double_age = df.age * 2", target=df) animal age double_age 0 dog 10 20 1 pig 20 40