如何对DataFrame实现嵌套分组聚合?多维度统计需求求解
解决方案
可以实现,无需复杂嵌套分组,分维度统计后合并即可:
- 计算类别计数:按
周期+类别分组,统计每组行数,得到每个周期下各类别的出现次数 - 计算周期计数:仅按
周期分组,统计每个周期的总行数 - 合并关联:将两个统计结果与原始数据关联,再去重整理得到目标结构
用Pandas代码实现如下:
import pandas as pd # 构造原始DataFrame df = pd.DataFrame({ '索引': [1,2,3,4,5,6], '周期': [20181231,20181231,20181231,20190131,20190131,20190131], '类别': [1,2,3,1,2,2] }) # 统计每个周期下各类别的数量 category_count = df.groupby(['周期', '类别']).size().reset_index(name='类别计数') # 统计每个周期的总数量 period_count = df.groupby('周期').size().reset_index(name='周期计数') # 合并统计结果并去重,匹配目标结构 result = df.merge(category_count, on=['周期', '类别']) \ .merge(period_count, on='周期') \ .drop_duplicates(subset=['周期', '类别']) \ [['索引', '周期', '类别', '类别计数', '周期计数']] print(result)
执行后输出的结果完全符合需求,核心是分开计算不同维度的统计值,再通过关联合并,避免同时分组导致的统计维度冲突。
内容的提问来源于stack exchange,提问作者just_simple_r
相关产品推荐
相关产品推荐

