You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas中使用groupby聚合函数时不删除原有行

解决方案

使用pandas的transform方法即可实现需求,它会将分组聚合结果映射回对应分组的每一行,不会压缩原数据行数:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame([['A', 1], ['A', 2], ['A', 3], ['B', 1], ['B', 2]],
                   columns=['Key', 'Value'])

# 新增Count列存储对应Key的分组行数
df['Count'] = df.groupby('Key')['Key'].transform('count')

print(df)

运行后输出结果如下,保留了全部5行原始数据:

Key  Value  Count
0   A      1      3
1   A      2      3
2   A      3      3
3   B      1      2
4   B      2      2

如果需要统计指定列的非空值数量,只需要将groupby后的索引列修改为对应列即可,例如统计Value列的非空计数:df.groupby('Key')['Value'].transform('count')。


替代实现(map方法)

如果更习惯用字典映射的逻辑,也可以先计算分组计数的映射表,再赋值给新列:

count_map = df.groupby('Key').size().to_dict()
df['Count'] = df['Key'].map(count_map)

两种方法最终得到的结果完全一致。

内容的提问来源于stack exchange,提问作者Guyblublu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:42:02