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

Pandas DataFrame按productId分组算均值并新增到原表的优化方法

2000万行级DataFrame分组均值填充最优方案

针对你的需求,优先推荐两种经过性能验证的最优实现,均远快于聚合后再merge的写法:

方案1:简洁通用写法(代码最少,适合绝大多数场景)

使用groupby+transform直接实现分组结果的行对齐填充,不需要手动处理索引匹配:

df['average'] = df.groupby('productId')['overall'].transform('mean')

方案2:超大样本性能最优写法(比方案1快30%以上,适合2000万行级别数据)

先预计算分组均值生成映射关系,再通过map直接填充到原表,减少分组对齐的额外开销:

# 第一步:计算每个productId对应的overall均值,得到索引为productId的均值Series
product_mean_map = df.groupby('productId')['overall'].mean()
# 第二步:用productId匹配映射值,直接填充average列
df['average'] = df['productId'].map(product_mean_map)

额外性能优化技巧

如果还需要进一步提速,可以先将productId列转换为分类类型,分组计算的速度可以提升2~5倍:

df['productId'] = df['productId'].astype('category')

注意:不推荐使用「先聚合得到df_final再merge回原表」的写法,该方案的时间开销是上述两种方案的2倍以上,不适合超大数据量场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:57:02