Python Pandas:按A、B分组并针对E各值汇总C、D的优化方案
更优的Pandas分组求和实现方式
你可以直接通过多层分组的方式一次性完成计算,完全不需要循环,性能和代码简洁性都能得到大幅提升:
核心实现代码
# 一次性按A、B、E分组,对C、D列求和 grouped_sum = df.groupby(['A', 'B', 'E'])[['C', 'D']].sum()
后续按需提取结果
如果需要单独获取某个E值对应的A、B分组求和结果,直接用索引提取即可:
# 获取E=目标值的分组求和结果 specific_e_result = grouped_sum.xs('目标E值', level='E')
如果需要把所有E值对应的结果分别存入字典,用字典推导式快速生成:
e_results = {e: grouped_sum.xs(e, level='E') for e in df['E'].unique()}
为什么这方法更优
- 性能更高:避免了循环中重复的DataFrame切片和分组操作,pandas一次性完成所有分组计算,数据量越大优势越明显
- 结构规整:得到的多层索引结果便于后续的筛选、合并等操作
- 代码简洁:一行核心代码替代循环逻辑,可读性更强
内容的提问来源于stack exchange,提问作者MBlrd
相关产品推荐
相关产品推荐

