码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [Pandas技巧] 分组比例计算求和


     美图欣赏2022/08/01

    问题:在最近的需求开发中,有这么个分组比例计算求和问题,根据字段'CPN'进行分组,计算每一笔PO Line Actual CT2R * line 数量比重,取名为'Weighted(QTY)CT2R',再根据相同的'CPN'对每行'Weighted(QTY)CT2R'值进行汇总求和得到总的'Weighted(QTY)CT2R'值,如下图填充色为黄色的单元格即是我们所需要的目标值

    具体计算逻辑如下:

    用Pandas代码实现上述需求如下所示: 

    1. import pandas as pd
    2. df = pd.DataFrame([['01-0989',10,90],
    3. ['01-0989',10,90],
    4. ['01-0989',10,90],
    5. ['01-0989',10,90],
    6. ['01-0989',10,90],
    7. ['01-0989',10,90],
    8. ['01-0989',10,90],
    9. ['01-0989',10,90],
    10. ['01-0989',10,90],
    11. ['01-0989',200,50],
    12. ['02-0437',20,80],
    13. ['02-0437',20,80],
    14. ['02-0437',20,80]
    15. ],columns = ['cpn','po_line_qty','actual_ct2r'])
    16. # 根据字段'cpn'进行分组,对字段'po_line_qty'中的值进行求和,取名为total
    17. total = df.groupby('cpn').agg({'po_line_qty':sum}).reset_index()
    18. # 将字段'po_line_qty'更名为'total_po_line_qty'
    19. total = total.rename(columns = {'po_line_qty':'total_po_line_qty'})
    20. # df表与total表根据字段'cpn'进行左连接,取名为new_res
    21. new_res = pd.merge(df,total,how='left',on='cpn')
    22. def weighted_qty_ct2r(row):
    23. scale = row['po_line_qty'] / row['total_po_line_qty']
    24. weighted_qty_ct2r = scale * row['actual_ct2r']
    25. return weighted_qty_ct2r
    26. # 生成字段'weighted_qty_ct2r'
    27. new_res['weighted_qty_ct2r'] = new_res.apply(lambda row:weighted_qty_ct2r(row), axis=1)
    28. # 根据字段'cpn'进行分组,对字段'weighted_qty_ct2r'中的值进行求和,取名为df_result
    29. df_result = new_res.groupby('cpn').agg({'weighted_qty_ct2r':sum})

    df

    total

    new_res

    df_result 

  • 相关阅读:
    HDLbits:Lemmings4
    MMPretrain
    宝宝有这些表现正不正常?我来告诉你
    时序预测 | MATLAB实现WOA-CNN-BiLSTM-Attention时间序列预测(SE注意力机制)
    VS_QT_4_Qt设计师
    国际物流报关流程
    mybatis源码体系介绍配置文件解析及源码解析
    全栈开发学习记录:一个简单的node.js服务器以及用到的表、视图、存储过程和配套测试的前端.
    【人工智能】人脸识别系统【实验报告与全部代码】(QDU)
    第二届全国高校计算机技能竞赛——Java赛道
  • 原文地址:https://blog.csdn.net/Hudas/article/details/126092034
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号