axl668 2021-09-02 16:11 采纳率: 100%
浏览 52
已结题

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;

 

 

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

 

  • 写回答

2条回答 默认 最新

  • 关注

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

    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    axl668 2021-09-03 16:17

    感谢专家大神指导,还在学习,想做工程结构结算系统,有成很项目、标段、线路、建筑物、桩号、断面、构件,构件涉及到属性长宽高等,再将长宽高数量计算值代入清单,基本思路已明确,用sqlite计算功能限,刚了解了一下pandas,就是还想知道df表中忘列出计算式列,即将计算方法中的长宽高数量等直接代入列出计算式列,计算式列怎么def定义?,谢谢,我还在研究你的def,还未懂,谢谢!

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 9月11日
  • 已采纳回答 9月3日
  • 创建了问题 9月2日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部