是否可以在 python 中的 df[ ] 中放置一个字符串?

Is it possible to place a string inside df[ ] in python?

我知道这很糟糕。我真的很想知道这是否可以在 python 中完成,所以我现在有两个带有算术方程式的字符串,我想将它们放在 df[ ] 中。 df 是一个数据框 这可以吗?

X = "'cars'+'bikes'*'planes'"

现在应该像下面这样放置

X = df['cars']+df['bikes']*df['planes']

如果可以怎么办?

我假设您知道使用 eval 的后果。

s =  "'cars'+'bikes'*'planes'"

df['out'] = eval(re.sub(r"([^+\-*\/]+)", r'df[]', s))

所做的基本上是替代品df。它将 'cars'+'bikes'*'planes' 更改为 df['cars']+df['bikes']*df['planes']。 如果你不想使用 eval 你可以解析 column namesoperands like

columns = re.findall(r"'([^+\-*\/]+)'", s)
operands = re.findall(r'([+\-*\/]+)', s)

但在这种情况下,您需要定义操作优先级并创建树来计算结果。


更新

import re
import pandas as pd

s =  "'cars'+30*'bikes'-'planes'+20"
s2 = re.sub(r"('[^+\-*\/'\d]+')", r'df[]', s)

pd.eval(s2)