我希望能够解析这样的表达式:
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
模块?
result = df["A"] + df["B"] + sqrt(df["B"] + 4)
吗?它应该可以工作。 - Dimuth Tharaka Menikgamasqrt
函数,我会得到这个错误TypeError: cannot convert the series to <class 'float'>
, 因此必须使用apply
来调用该函数。 - ChesuCRfloat64
值,int32
值,甚至是numpy.nan
值。 - ChesuCR