如何评估 Pandas 中的一系列表达式

问题描述 投票:0回答:2

我有一个数据框,其中有一列充满表达式:

pd.Series("A + B", "B + C", ...)
它真的很长,所以我想找到一种矢量化的方法来使用本地字典来评估每个表达式
{"A": 5, "B": -2.1, ... }

我已经尝试过了

pd.eval(df["expressions"], local_dict=dict_all_values)

但它似乎不起作用,因为它返回 101 个值,但表达式是 21656。

python pandas eval
2个回答
0
投票

这不是矢量化的,但也许就足够了:

# s is the series; d the dictionary
s.map(lambda expr: eval(expr, {}, d))

0
投票

一种可能的解决方案是:

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
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.