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

时间:2021-01-09 10:19:43

标签: python python-3.x pandas dataframe eval

我正在尝试解析一个字符串计算,它是数据框中的一列,如果计算是静态的,我可以使用 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”列中的计算。

1 个答案:

答案 0 :(得分:1)

您可以df.applydf.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