gpt4 book ai didi

python - 如何使用 Pandas Dataframe 列解析和评估数学表达式?

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:46 27 4
gpt4 key购买 nike

我想做的是解析这样一个表达式:

result = A + B + sqrt(B + 4)

其中 A 和 B 是数据框的列。所以我必须像这样解析表达式才能得到结果:

new_col = df.B + 4
result = df.A + df.B + new_col.apply(sqrt)

df 是数据框。

我已经尝试过使用 re.sub 但最好只像这样替换列变量(而不是函数):

import re

def repl(match):
inner_word = match.group(1)
new_var = "df['{}']".format(inner_word)
return new_var

eq = 'A + 3 / B'
new_eq = re.sub('([a-zA-Z_]+)', repl, eq)
result = eval(new_eq)

所以,我的问题是:

  • 是否有 python 库可以执行此操作?如果没有,我怎样才能以简单的方式实现这一点?
  • 创建递归函数可能是解决方案?
  • 如果我使用“反向抛光符号”可以简化解析?
  • 我必须使用 ast 吗?模块?

最佳答案

Pandas DataFrames 确实有一个 eval功能。使用您的示例方程式:

import pandas as pd
# create an example DataFrame to work with
df = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
# define equation
eq = 'A + 3 / B'
# actual computation
df.eval(eq)

# more complicated equation
eq = "A + B + sqrt(B + 4)"
df.eval(eq)

警告

请记住,eval 允许运行任意代码,如果您将用户输入传递给此函数,这会使您容易受到代码注入(inject)攻击。

关于python - 如何使用 Pandas Dataframe 列解析和评估数学表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47135742/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com