如何按指定分组配置对pandas DataFrame列数据执行聚合计算
实现方案
完全可以实现该需求,核心思路是通过分组映射表建立变量名到分组的对应关系,再对原DataFrame的列按分组聚合求和即可,不需要提前知道每个分组的变量数量。
完整可运行代码
import pandas as pd # 测试数据 data = {'RPI':[1], 'IP':[1], 'Labor1':[2], 'Labor2':[2], 'Housing1':[3], 'Housing2':[3]} df = pd.DataFrame(data) groups = {'Description':['RPI','IP','Labor1','Labor2','Housing1','Housing2'], 'Groups':['Real','Real','Labor','Labor','Housing','Housing']} groups = pd.DataFrame(groups) # 1. 建立变量名到分组的映射字典 group_map = dict(zip(groups['Description'], groups['Groups'])) # 2. 对原df的列按映射分组,求和聚合 aggregate = df.groupby(group_map, axis=1).sum() # 输出验证 print(aggregate)
代码说明
- 第一步先把分组对照表转成
变量名:分组名的字典,作为后续分组的依据 - 第二步调用pandas的
groupby方法,指定axis=1按列分组,直接调用sum()就可以得到每个分组下所有变量的加总结果,输出的就是你需要的维度为[1,分组数]的DataFrame,完全兼容126列转8个分组的使用场景。
内容的提问来源于stack exchange,提问作者user13201583
相关产品推荐
相关产品推荐

