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

在pandas.groupby聚合后,如何快速保留原始数据实例?

Pandas GroupBy聚合后保留原始数据实例的最快方法

要达成你展示的需求——让每个原始数据行都对应其所在分组的聚合值,最快的方式是用pandas的transform方法,它专门用来生成和原DataFrame同长度的分组聚合结果,自动匹配对应分组的每一行,不用额外做合并操作。

示例代码

先构造你给出的示例数据:

import pandas as pd

df = pd.DataFrame({
    'entries': ['entry1', 'entry2', 'entry3', 'entry4', 'entry5', 'entry6', 'entry7', 'entry8'],
    'column': ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'],
    'values': [1.5, 1.3, 0.6, 0.7, 0.5, 0.5, 1.3, 1.7]
})

然后执行核心操作:

# 按column分组,计算values的均值,用transform映射到每一行
df['mean'] = df.groupby('column')['values'].transform('mean')
# 格式化均值保留三位小数,和示例格式对齐
df['mean'] = df['mean'].round(3)

最终结果

执行后得到的DataFrame如下(注:你提供的示例中C组均值1.666是计算错误,实际0.5+1.3+1.7=3.5,除以3约为1.167):

entries column  values   mean
0  entry1      A     1.5  1.333
1  entry2      A     1.3  1.333
2  entry3      A     0.6  1.333
3  entry4      B     0.7  0.600
4  entry5      B     0.5  0.600
5  entry6      C     0.5  1.167
6  entry7      C     1.3  1.167
7  entry8      C     1.7  1.167

效率说明

对比先聚合再用merge合并回原数据的方式,transform直接在分组内部完成结果的广播映射,省去了合并步骤的额外开销,处理大数据集时效率优势会更明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:25:39