我有一个数据框,其中有一列充满表达式:
pd.Series("A + B", "B + C", ...)
它真的很长,所以我想找到一种矢量化的方法来使用本地字典来评估每个表达式{"A": 5, "B": -2.1, ... }
。
我已经尝试过了
pd.eval(df["expressions"], local_dict=dict_all_values)
但它似乎不起作用,因为它返回 101 个值,但表达式是 21656。
这不是矢量化的,但也许就足够了:
# s is the series; d the dictionary
s.map(lambda expr: eval(expr, {}, d))
一种可能的解决方案是:
df = pd.DataFrame({
'expressions': ['A+B', 'A*B', 'A-B', 'A/B'],
})
A=2
B=1
df['eval'] = df['expressions'].apply(lambda x: pd.eval(x))
print(df)
expressions eval
0 A+B 3.0
1 A*B 2.0
2 A-B 1.0
3 A/B 2.0