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

如何用Pandas按分组列的平均值填充NaN缺失值

按分组平均值填充DataFrame缺失值

原始数据

初始DataFrame代码及数据如下:

import pandas as pd

df = pd.DataFrame({
    "species":["cat","dog","dog","cat","cat"],
    "weight":[5,4,3,7,None],
    "length":[12,None,13,14,15],
})

输出的初始数据:

species  weight  length
0     cat     5.0    12.0
1     dog     4.0     NaN
2     dog     3.0    13.0
3     cat     7.0    14.0
4     cat     NaN    15.0

需求说明

用对应species分组的各列平均值填充缺失数据:

  • 行1的length缺失值,用狗(dog)的平均长度13填充
  • 行4的weight缺失值,用猫(cat)的平均体重6((5+7)/2)填充

解决方案

通过groupby结合transform生成与原DataFrame结构匹配的分组均值数据,直接传入fillna的value参数即可完成填充:

# 生成对应分组的均值DataFrame
group_means = df.groupby('species').transform('mean')
# 填充缺失值
df_filled = df.fillna(value=group_means)

填充后的结果:

species  weight  length
0     cat     5.0    12.0
1     dog     4.0    13.0
2     dog     3.0    13.0
3     cat     7.0    14.0
4     cat     6.0    15.0

原理说明

  • df.groupby('species').transform('mean')会为每一行计算其所属species分组的各列平均值,生成的结果与原DataFrame的索引、列名完全一致,比如行1对应dog分组,length列值为dog组的平均长度13;行4对应cat分组,weight列值为cat组的平均体重6。
  • 将这个结果传给fillna的value参数,pandas会自动用对应位置的均值填充原DataFrame的缺失值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 16:42:42