熊猫.评估# 熊猫。eval ( expr ,解析器= 'pandas' ,引擎= None , local_dict = None , global_dict = None ,解析器= () , level = 0 , target = None , inplace = False ) [来源] # 使用各种后端将 Python 表达式作为字符串求值。 支持以下算术运算:+、-、*、 /、**、%、//(仅限 python 引擎)以及以下布尔运算:|(or)、&(and) 和~(not)。此外,'pandas'解析器允许使用and、 or、 和 ,not其语义与相应的按位运算符相同。对象Series的 DataFrame支持和行为与普通的 Python 评估一样。 参数: 表达式字符串要评估的表达式。该字符串不能包含任何 Python 语句,只能包含 Python表达式。 解析器{'pandas', 'python'}, 默认 'pandas'用于从表达式构造语法树的解析器。默认的'pandas'解析代码与标准 Python 略有不同。或者,您可以使用解析器解析表达式 'python'以保留严格的 Python 语义。有关更多详细信息,请参阅 增强性能文档。 引擎{'python', 'numexpr'}, 默认 'numexpr'用于计算表达式的引擎。支持的引擎有 None :尝试使用numexpr,回退到python 'numexpr':此默认引擎使用 numexpr 计算 pandas 对象,以在具有大帧的复杂表达式中大幅加速。 'python':执行操作就像eval在顶级 python 中一样。该引擎通常没有那么有用。 将来可能会提供更多后端。 local_dict dict 或 None,可选局部变量的字典,默认取自 locals()。 global_dict dict 或 None,可选全局变量的字典,默认取自 globals() 。 类似于 dict 的解析器列表或 None,可选实现特殊方法的对象列表__getitem__,可用于注入额外的命名空间集合以用于变量查找。例如,这在方法中用于 query()注入 引用其各自 实例属性的DataFrame.index和变量。DataFrame.columnsDataFrame level整数,可选要遍历并添加到当前范围的先前堆栈帧的数量。大多数用户不需要更改此参数。 目标对象,可选,默认 None这是要赋值的目标对象。当表达式中有变量赋值时使用。如果是这样,那么target必须支持使用字符串键进行项目分配,并且如果返回副本,它还必须支持.copy()。 inplace布尔值,默认 False如果提供了target,并且表达式改变了target,是否就地修改target。否则,返回带有突变的目标副本。 返回: ndarray、数值标量、DataFrame、Series 或 None评估给定代码的完成值或 None if inplace=True。 加薪: 值错误在很多情况下都会引发此类错误: target=None,但表达式是多行的。 表达式是多行的,但并非所有表达式都有项目分配。这种安排的一个例子是这样的: a = b + 1 a + 2 在这里,不同行上有表达式,使其成为多行,但最后一行没有分配给a + 2的输出的变量。 inplace=True,但表达式缺少项目分配。 提供了项目分配,但目标不支持字符串项目分配。 提供了项目分配且inplace=False,但目标 不支持.copy()方法 也可以看看 DataFrame.query计算布尔表达式以查询框架的列。 DataFrame.eval评估描述 DataFrame 列操作的字符串。 笔记 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