pandas.eval#
- 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
具有与相应的按位运算符相同的语义。Series
和DataFrame
对象是受支持的,并且它们的行为与普通的‘Python计算一样。- 参数
- expr应力
要计算的表达式。此字符串不能包含任何Python statements ,只有Python expressions 。
- parser{‘pandas’,‘python’},默认为‘pandas’
用于从表达式构造语法树的解析器。的默认设置
'pandas'
解析与标准Python略有不同的代码。或者,您可以使用'python'
解析器,以保留严格的Python语义。请参阅 enhancing performance 文档以了解更多详细信息。- engine{‘python’,‘numexpr’},默认为‘numexpr’
用于计算表达式的引擎。支持的引擎包括
无:尝试使用
numexpr
,回落到python
'numexpr'
:此默认引擎使用以下命令计算Pandas对象Numexpr表示具有大框架的复杂表达式中的大速度提升。
'python'
:执行操作,就像您拥有eval
位居榜首级别的 Python 。这个引擎一般没什么用处。
未来可能会有更多的后端可用。
- truediv布尔值,可选
是否使用真除法,如在Python中>=3。
1.0.0 版后已移除.
- local_dictDict或None,可选
局部变量的字典,默认情况下取自局部变量()。
- global_dictDict或None,可选
全局变量的字典,默认取自GLOBALS()。
- resolvers类词典或无列表,可选
实现的对象的列表
__getitem__
可用于注入附加命名空间集合以用于变量查找的特殊方法。例如,它用在query()
方法以将DataFrame.index
和DataFrame.columns
引用其各自的变量DataFrame
实例属性。- level整型,可选
要遍历并添加到当前作用域的先前堆栈帧的数量。大多数用户将 not 需要更改此参数。
- target对象,可选,默认为无
这是赋值的目标对象。它在表达式中有变量赋值时使用。如果是这样,那么 target 必须支持具有字符串键的项分配,如果要返回副本,则还必须支持 .copy() 。
- inplace布尔值,默认为False
如果 target ,并且该表达式会发生变化 target ,是否修改 target 就位。否则,请返回 target 与突变有关。
- 退货
- Ndarray、数字标量、DataFrame、系列或无
计算给定代码的完成值,如果
inplace=True
。
- 加薪
- ValueError
在许多情况下,可能会引发此类错误:
target=None ,但表达式是多行的。
表达式是多行的,但并不是所有的表达式都有项目分配。这种安排的一个例子是:
A=b+1a+2
在这里,不同行上有表达式,使其成为多行,但最后一行没有分配给的输出变量 a + 2 。
inplace=True ,但该表达式缺少项赋值。
提供了项分配,但 target 不支持字符串项分配。
提供了项目分配,并且 inplace=False ,但是 target 不支持 .copy() 方法
参见
DataFrame.query
计算布尔表达式以查询框架的列。
DataFrame.eval
计算描述DataFrame列上的操作的字符串。
注意事项
这个
dtype
算术中涉及的任何对象的%
操作被递归强制转换为float64
。请参阅 enhancing performance 文档以了解更多详细信息。
示例
>>> 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