如何解析 pandas 数据框列中的字符串计算

How to parse a string calculation in a pandas dataframe column

我正在尝试解析一个字符串计算,它是数据框中的一列,如果计算是静态的,我可以使用 eval 函数。然而,当你给它一个列名时,这似乎不起作用。

import pandas as pd

calcs = {'a': [1,1],
         'b': [1,1],
         'c': [1,1],
         'calc': ['result=a*b','result=a+b']}

df = pd.DataFrame(calcs, columns = ['a', 'b','c','calc'])
 
print(df)
 
a b c calc
1 1 1 a*b
1 1 1 a+b

你能告诉我如何评估数据框中每一行的 'calc' 列中的计算吗?

你可以df.apply, df.eval:

>>> df['result'] = df.apply(lambda x:x.to_frame().T.eval(x[-1]).item(), axis=1)
>>> df
   a  b  c calc  result
0  1  1  1  a*b       1
1  1  1  1  a+b       2

或使用np.diag:

>>> import numpy as np
>>> df['result'] = np.diag(df.eval(df['calc']))
>>> df
   a  b  c calc  result
0  1  1  1  a*b       1
1  1  1  1  a+b       2