根据 Pandas 中的公式动态计算表达式
使用 pd.eval 对一个或多个数据帧列上的算术表达式进行计算是一项常见任务,尤其是在自动化时工作流程。考虑以下代码片段:
`x = 5
df2['D'] = df1['A'] (df1['B'] * x)``
此代码通过对 df1 中的 A 列和 B 列执行操作并将结果乘以变量 x,将新列 D 添加到 df2。目标是动态重复此数据操作,利用 pd.eval 将表达式作为字符串执行的能力。
首先,让我们介绍输入 DataFrame:
import pandas as pd import numpy as np np.random.seed(0) df1 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD')) df2 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD')) df1 A B C D 0 5 0 3 3 1 7 9 3 5 2 2 4 7 6 3 8 8 1 6 4 7 7 8 1 df2 A B C D 0 5 9 8 9 1 4 3 0 3 2 5 0 2 3 3 8 1 3 3 4 3 7 0 1
使用动态评估表达式pd.eval,可以使用以下代码:
result = pd.eval('df1.A (df1.B * x)')
这行代码创建一个名为 result 的新 DataFrame,其中包含计算后的表达式。 eval函数还可以用来进行条件求值,如:
pd.eval('df1.A > df2.A')
将表达式的结果赋值回来对于 df2,请使用以下语法:
df2['D'] = pd.eval('df1.A (df1.B * x)', target=df2)
要在表达式字符串内传递参数,请使用 @ 符号:
pd.eval('df1.A (df1. B * @x)', local_dict={'x': 5})
为了获得最佳性能,请考虑以下事项参数:
parser='python' 用于控制语法规则并确保与 Python 运算符优先级的一致性。
engine='numexpr' 用于使用优化的 numexpr 后端进行更快的评估。
这应该为您提供全面了解如何使用 pd.eval 从 Pandas 中的公式动态计算表达式。
以上是如何使用 pd.eval 动态评估 Pandas 中公式的表达式?的详细内容。更多信息请关注PHP中文网其他相关文章!