pandas如何实现A列行内为文本计算式或列名计算式,B列直接计算出结果

pandas:read_excel导入的表,列名:行号、长、宽、高、数量、计算方法名称、计算方法、计算结果。

行记录如:1,3,0.35,1.25,2,双侧面积,(长*高+宽*高)*数量,nan;

2,2,(0.6+0.35)/2,(1.1+1.3)/2,2,体积,长*宽*高*数量,nan;

 

 

能直接计算出'计算结果'列的值的函数,自定义函数。每行数据不一样,计算方法不一样。有两个步骤:长宽高列值代入形成文本计算式,再求'计算结果'的值。

 

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

import re
import pandas as pd
df=pd.read_csv('a.csv')
print(df)

def pf(t):
    ds = re.sub(r'([\u4e00-\u9fa5A-Za-z]+)',r'eval(str(t["\1"]))',t["计算方法"])
    return eval(ds)
df['计算结果'] = df.apply(pf,axis=1)

print(df)

img

python 的eval函数可以计算表达式的值,你可以试试