Python:为GroupBy分组结果添加包含每组大小的列
解决方案:为GroupBy结果添加组大小列
你可以通过一次groupby操作同时搞定两个统计需求,或者基于已有的结果补充组大小数据,两种方法都很实用,我给你详细说说:
方法1:一次聚合完成所有统计(推荐)
直接在groupby后用agg()指定多个统计规则,同时计算唯一Nr的数量和组的总行数,这样效率更高:
DFGroup = df.groupby('Type').agg( Unique_Nr=('Nr', 'nunique'), # 统计每个Type下唯一Nr的数量 Group_Size=('Nr', 'size') # 统计每个Type对应的原始数据行数(组大小) ).reset_index()
方法2:基于已有结果补充组大小
如果你已经生成了最初的DFGroup,也可以单独计算组大小后通过合并来补充:
# 先计算每个Type的组大小 group_size_df = df.groupby('Type').size().reset_index(name='Group_Size') # 合并到已有的统计结果中 DFGroup = DFGroup.merge(group_size_df, on='Type')
最终结果示例
用你提供的原始数据,两种方法都会得到如下结果:
| Type | Unique_Nr | Group_Size |
|---|---|---|
| One | 2 | 5 |
| Two | 2 | 4 |
这里的Group_Size就是每组的原始数据行数,完全匹配你的需求~
内容的提问来源于stack exchange,提问作者MaMo
相关产品推荐
相关产品推荐

