用法:
pandas.eval(expr, parser='pandas', engine=None, truediv=NoDefault.no_default, local_dict=None, global_dict=None, resolvers=(), level=0, target=None, inplace=False)
使用各种后端将 Python 表达式评估为字符串。
支持以下算术运算:
+
,-
,*
,/
,**
,%
,//
(仅限 Python 引擎)以及以下布尔运算:|
(或者),&
(和),和~
(不是)。此外,'pandas'
解析器允许使用and
,or
, 和not
与相应的位运算符具有相同的语义。pandas.Series和pandas.DataFrame对象被支持并且行为与普通的 ol' Python 评估一样。- expr:str
要评估的表达式。该字符串不能包含任何 Python 语句,只能包含 Python 表达式。
- parser:{‘pandas’, ‘python’},默认 ‘pandas’
用于从表达式构造语法树的解析器。
'pandas'
的默认值解析代码与标准 Python 略有不同。或者,您可以使用'python'
解析器解析表达式以保留严格的 Python 语义。有关更多详细信息,请参阅增强性能文档。- engine:{‘python’, ‘numexpr’},默认 ‘numexpr’
用于评估表达式的引擎。支持的引擎是
无:尝试使用
numexpr
,回退到python
'numexpr'
:此默认引擎使用评估 Pandas 对象numexpr 用于在具有大帧的复杂表达式中大幅加速。
'python'
:执行操作就像您在顶部有eval
'd级别的Python。这个引擎通常没那么有用。
将来可能会提供更多后端。
- truediv:布尔型,可选
是否使用真正的除法,例如 Python >= 3。
- local_dict:dict 或 None,可选
局部变量字典,默认取自locals()。
- global_dict:dict 或 None,可选
全局变量字典,默认取自globals()。
- resolvers:dict-like 或无列表,可选
实现
__getitem__
特殊方法的对象列表,可用于注入额外的命名空间集合以用于变量查找。例如,这在query()
方法中用于注入引用其各自DataFrame
实例属性的DataFrame.index
和DataFrame.columns
变量。- level:整数,可选
要遍历并添加到当前范围的先前堆栈帧的数量。大多数用户不需要更改此参数。
- target:对象,可选,默认无
这是分配的目标对象。当表达式中有变量赋值时使用它。如果是这样,那么
target
必须支持使用字符串键进行项目分配,并且如果要返回副本,它还必须支持.copy()
。- inplace:布尔值,默认为 False
如果提供了
target
,并且表达式改变了target
,是否就地修改target
。否则,返回带有突变的target
的副本。
- ndarray、数值标量、DataFrame、Series 或 None
评估给定代码的完成值或 None 如果
inplace=True
。
- ValueError
有很多情况可以引发这样的错误:
target=None
,但表达式是多行的。表达式是多行的,但并非所有表达式都有项目分配。这种安排的一个例子是:
a = b + 1 a + 2
在这里,不同的行上有表达式,使其成为多行,但最后一行没有分配给
a + 2
输出的变量。inplace=True
,但表达式缺少项目分配。提供了项目分配,但
target
不支持字符串项目分配。提供了项目分配和
inplace=False
,但target
不支持.copy()
方法
参数:
返回:
抛出:
注意:
算术
%
操作中涉及的任何对象的dtype
都递归地转换为float64
。有关更多详细信息,请参阅增强性能文档。
例子:
>>> df = pd.DataFrame({"animal":["dog", "pig"], "age":[10, 20]}) >>> df animal age 0 dog 10 1 pig 20
我们可以使用
pd.eval
添加一个新列:>>> pd.eval("double_age = df.age * 2", target=df) animal age double_age 0 dog 10 20 1 pig 20 40
相关用法
- Python pandas.eval()用法及代码示例
- Python pandas.errors.DtypeWarning用法及代码示例
- Python pandas.errors.DuplicateLabelError用法及代码示例
- Python pandas.errors.ParserWarning用法及代码示例
- Python pandas.arrays.IntervalArray.is_empty用法及代码示例
- Python pandas.DataFrame.ewm用法及代码示例
- Python pandas.api.types.is_timedelta64_ns_dtype用法及代码示例
- Python pandas.DataFrame.dot用法及代码示例
- Python pandas.DataFrame.apply用法及代码示例
- Python pandas.DataFrame.combine_first用法及代码示例
- Python pandas.read_pickle用法及代码示例
- Python pandas.Index.value_counts用法及代码示例
- Python pandas.DatetimeTZDtype用法及代码示例
- Python pandas.DataFrame.cumsum用法及代码示例
- Python pandas.Interval.is_empty用法及代码示例
- Python pandas.api.indexers.FixedForwardWindowIndexer用法及代码示例
- Python pandas.core.resample.Resampler.nearest用法及代码示例
- Python pandas.Series.add_prefix用法及代码示例
- Python pandas.Period.strftime用法及代码示例
- Python pandas.Series.map用法及代码示例
注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.eval。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。