首页  >  文章  >  后端开发  >  如何使用 pd.eval()、DataFrame.eval() 和 DataFrame.query() 动态计算 Pandas 中的表达式?

如何使用 pd.eval()、DataFrame.eval() 和 DataFrame.query() 动态计算 Pandas 中的表达式?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-20 04:14:02643浏览

How to Dynamically Evaluate Expressions in Pandas Using pd.eval(), DataFrame.eval(), and DataFrame.query()?

动态计算 Pandas 中公式的表达式

在 pandas 中,有多种方法可以动态计算公式中的表达式:

1。 pd.eval()

此函数使用字符串作为输入来计算算术表达式。它支持数学运算、逻辑运算符和条件语句。您可以按如下方式使用它:

expression = "df1['A'] + (df1['B'] * x)"
pd.eval(expression)

2. DataFrame.eval()

与 pd.eval() 类似,此方法计算 DataFrame 中的表达式。它提供了一种无需指定“df1”即可访问列的便捷方法。前缀。

df1.eval("A + (B * x)")

3. DataFrame.query()

此函数计算条件表达式并返回布尔掩码。然后,您可以使用掩码来过滤 DataFrame。

condition = "A >= B"
df1.query(condition)

特定问题的答案:

  1. 最佳性能: 使用pd.eval() 或 DataFrame.eval() 与“numexpr”后端。 “python”后端没有提供任何性能优势,并且存在安全风险。
  2. 分配结果:您可以使用“target=”将表达式的结果分配回 DataFrame参数。

    df2 = pd.DataFrame()
    pd.eval("df2['D'] = df1['A'] + (df1['B'] * x)", target=df2)
  3. 传递参数:你可以使用“@”符号将参数作为表达式中的变量传递。

    expression = "df1['A'] + (@x * df1['B'])"
    pd.eval(expression, local_dict={"x": 5})

其他注意事项:

  • 选择根据您的需求和您要评估的表达式类型选择适当的方法。
  • 使用括号作为运算符必要时优先。
  • “resolvers=”参数可用于提供在表达式中使用的自定义函数或变量。
  • 对于多行表达式和赋值,请使用 DataFrame.eval(), as query() 只接受单行条件。

以上是如何使用 pd.eval()、DataFrame.eval() 和 DataFrame.query() 动态计算 Pandas 中的表达式?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn