Pandas如何按Group列分组计算distance列的累计求和
实现方法
你可以直接用pandas内置的groupby+cumsum方法实现分组累计求和,完整代码如下:
import pandas as pd import numpy as np # 构造测试数据集 df = pd.DataFrame([['2021-01-01','Joe', 1, 7], ['2021-01-02',"Jack", 1, 6], ['2021-01-03',"Jess", 1, 9], ['2021-01-01',"Paul", 2, 11], ['2021-01-02',"Peter", 2, 12], ['2021-01-02',"Sara", 3, 15], ['2021-01-03',"Sarah", 3, 10]], columns=['Date','Runner', 'Group', 'distance [km]']) # 若原始数据没有按分组+日期排序,先执行排序保证累计和顺序正确 df = df.sort_values(by=['Group', 'Date']) # 按Group分组计算distance [km]的累计和 df['cum sum [km]'] = df.groupby('Group')['distance [km]'].cumsum() # 打印结果 print(df)
运行后输出结果和你预期的完全一致:
Date Runner Group distance [km] cum sum [km] 0 2021-01-01 Joe 1 7 7 1 2021-01-02 Jack 1 6 13 2 2021-01-03 Jess 1 9 22 3 2021-01-01 Paul 2 11 11 4 2021-01-02 Peter 2 12 23 5 2021-01-02 Sara 3 15 15 6 2021-01-03 Sarah 3 10 25
注意事项
- 如果你的实际数据集存在同分组同日期的多条数据,排序时可以额外增加其他维度(比如跑者名字)保证排序逻辑稳定
cumsum方法会严格按照数据当前的行顺序计算累计值,所以必须提前按你需要的累计顺序对数据做排序
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

