如何对含双键的Pandas DataFrame进行统计分析?
Pandas多键分组统计解决方案
需求背景
需要对Excel导入的Pandas DataFrame,按Section和Team双键组合,统计对应Bugs和Functions的总数。原始数据表结构如下:
| Section | Team | Bugs | Functions | month |
|---|---|---|---|---|
| A | dev | 1 | 1 | Jan |
| B | dev | 2 | 2 | Jan |
| B | design | 3 | 0 | Feb |
| A | design | 4 | 3 | Jan |
| A | design | 4 | 3 | Sep |
| A | dev | 4 | 3 | Jul |
| B | dev | 2 | 2 | Nov |
示例统计结果:
- (A, dev)的总Bug数(TNB)为5(1+4)
- (A, design)的总功能数(TNF)为8(3+3)
尝试过的无效方法
使用df.value_counts()仅支持单键统计,无法满足双键组合需求;拆分原表为子表会额外增加操作步骤。
最优解决方案
直接使用Pandas原生的groupby+sum组合API,这是低时间/空间复杂度的官方解决方案,无需循环或拆分表格:
# 按Section和Team双键分组,对Bugs、Functions列求和 result = df.groupby(['Section', 'Team'])[['Bugs', 'Functions']].sum() # 可选:重命名列名匹配需求中的TNB、TNF result = result.rename(columns={'Bugs': 'TNB', 'Functions': 'TNF'}) print(result)
运行后输出结果:
TNB TNF Section Team A dev 5 4 design 8 6 B dev 4 4 design 3 0
补充说明
groupby(['Section', 'Team'])指定双键分组依据,Pandas会自动按两列的唯一组合聚合数据[['Bugs', 'Functions']].sum()仅对目标列执行求和操作,避免不必要的计算开销- 该方案是Pandas原生优化的聚合逻辑,时间复杂度为O(n),空间复杂度远低于拆分表格的方式
内容的提问来源于stack exchange,提问作者Rui
相关产品推荐
相关产品推荐

