Python如何按userprofileid分组汇总totalhours与totalminutes数值
你写的代码会直接对整列赋值全表的总和,不管当前循环到哪个用户,所以所有行的统计结果都是全表总时长。要实现保留原有行、按用户分组求和的需求,直接用pandas的groupby搭配transform方法即可,transform会将分组聚合的结果回填到分组内的所有行,不会删除原有的记录。
正确实现代码:
# 按userprofileid分组求和并回填到原表每一行 clocking_left['user_minutes_total'] = clocking_left.groupby('userprofileid')['totalminutes'].transform('sum') clocking_left['user_hours_total'] = clocking_left.groupby('userprofileid')['totalhours'].transform('sum')
运行后你提供的示例数据会得到如下结果:
| userprofileid | totalhours | totalminutes | user_minutes_total | user_hours_total |
|---|---|---|---|---|
| 453 | 7.0 | 420 | 900 | 15.0 |
| 120 | 7.5 | 450 | 450 | 7.5 |
| 453 | 8.0 | 480 | 900 | 15.0 |
完全符合你不删除重复用户记录、同时统计每个用户总时长的需求。
内容的提问来源于stack exchange,提问作者Lander Iturregi
相关产品推荐
相关产品推荐

