You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于两个分类列对DataFrame的数值列进行条件累积求和?

按多分类列分组计算累积求和

需求:基于DataFrame的两个分类列(A、E),对数值列D执行分组累积求和,按A与E的组合(如A0E0、A0E1等)分别计算D列的累积和,生成示例中的F列。

给定数据

import pandas as pd

dict1 = {'A': {0: 'A0', 1: 'A0', 2: 'A0', 3: 'A0', 4: 'A1', 5: 'A1', 6: 'A1', 7: 'A1', 8: 'A1', 9: 'A1'}, 
         'B': {0: 'B0', 1: 'B1', 2: 'B2', 3: 'B3', 4: 'B4', 5: 'B5', 6: 'B6', 7: 'B7', 8: 'B8', 9: 'B9'}, 
         'C': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}, 
         'D': {0: 10, 1: 11, 2: 12, 3: 13, 4: 14, 5: 15, 6: 16, 7: 17, 8: 18, 9: 19}, 
         'E': {0: 'E0', 1: 'E1', 2: 'E0', 3: 'E1', 4: 'E0', 5: 'E1', 6: 'E0', 7: 'E1', 8: 'E0', 9: 'E1'}}

df2 = pd.DataFrame(dict1)

解决方案

使用pandas的groupby结合cumsum方法,按A、E两列分组后对D列计算累积求和:

df2['F'] = df2.groupby(['A', 'E'])['D'].cumsum()

说明

  • groupby(['A', 'E']):将DataFrame按A和E的唯一组合分组,每个分组对应一组A-E的配对(如A0+E0、A0+E1等)
  • ['D'].cumsum():对每个分组内的D列执行累积求和操作
  • 最终将结果赋值给新列F,即可得到需求中的效果

运行结果

A   B   C   D   E   F
0  A0  B0   0  10  E0  10
1  A0  B1   1  11  E1  11
2  A0  B2   2  12  E0  22
3  A0  B3   3  13  E1  24
4  A1  B4   4  14  E0  14
5  A1  B5   5  15  E1  15
6  A1  B6   6  16  E0  30
7  A1  B7   7  17  E1  32
8  A1  B8   8  18  E0  48
9  A1  B9   9  19  E1  51

内容的提问来源于stack exchange,提问作者Rajib Lochan Sarkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:05:25