pandas按分组计算从0开始仅累加至组内倒数第二个条目的累计和
实现方案
核心思路
- 按
A列分组后提取B列做累计和计算 - 将每个分组的累计和结果向下偏移1行,偏移后的缺失值统一填充为0,直接赋值为新列
C即可 - 若原始数据中同一
A值的行非连续排列,建议先按A列排序后再执行上述逻辑,避免累计和计算错误
代码实现
import pandas as pd # 构造示例输入数据 df = pd.DataFrame({ 'A': [1,1,2,2,2,3,3,4], 'B': [5,6,3,4,5,2,7,3] }) # 核心逻辑,一行即可实现需求 df['C'] = df.groupby('A')['B'].cumsum().shift(fill_value=0) # 输出验证 print(df)
输出结果
完全匹配预期输出:
A B C 0 1 5 0 1 1 6 5 2 2 3 0 3 2 4 3 4 2 5 7 5 3 2 0 6 3 7 2 7 4 3 0
内容的提问来源于stack exchange,提问作者William M.
相关产品推荐
相关产品推荐

