如何在Python中按组循环使用cumsum函数?附示例需求
分组内重置起点的累积求和解决方案
没问题,这在pandas里是非常常见的分组计算需求,我直接给你可运行的代码和清晰的逻辑解释:
步骤1:构造初始DataFrame
先把你给出的变量转换成pandas的DataFrame:
import pandas as pd # 对应你示例结果的原始数据 A = ['a','a','a','a','a','a','a','b','b','b','b','b'] B = [0,1,2,3,4,5,6,0,1,2,3,4] C = [0,3,4,5,7,6,7,6,4,6,8,6] # 创建初始DataFrame df = pd.DataFrame({'A': A, 'B': B, 'C': C})
步骤2:计算分组内累积求和生成D列
用groupby结合cumsum实现分组内重置的累积求和:
# 按A列分组,对每个分组内的C列计算累积求和,结果赋值给D列 df['D'] = df.groupby('A')['C'].cumsum()
查看最终结果
运行上述代码后,打印df就能得到你想要的结果:
A B C D 0 a 0 0 0 1 a 1 3 3 2 a 2 4 7 3 a 3 5 12 4 a 4 7 19 5 a 5 6 25 6 a 6 7 32 7 b 0 6 6 8 b 1 4 10 9 b 2 6 16 10 b 3 8 24 11 b 4 6 30
核心逻辑说明
df.groupby('A'):将数据按A列的取值分成独立分组(这里就是a组和b组)['C'].cumsum():对每个分组内的C列单独计算累积和,切换到新分组时会自动重置累积起点,完全匹配你要求的效果。
内容的提问来源于stack exchange,提问作者Bhagya Shree
相关产品推荐
相关产品推荐

