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

如何基于目标值对应的特征均值填充Pandas DataFrame缺失值

按目标值分组填充缺失值解决方案

你遇到的问题核心是未对原DataFrame列进行赋值操作,fillna默认返回填充后的新对象,不会修改原数据。以下是两种可实现原地填充的正确写法:

方法一:赋值回原列

import pandas as pd
import numpy as np

# 初始化示例数据
df_pk = pd.DataFrame({"f1": [1,2,3,4,5,6,7,8], "f2": [2, np.nan,6, 8, 10, np.nan,14,16], "y": [1,1,1,0,0,1,1,1]})

# 生成每行对应的y分组f2均值
group_f2_means = df_pk.groupby('y')['f2'].transform('mean')
# 填充缺失值并覆盖原列
df_pk['f2'] = df_pk['f2'].fillna(group_f2_means)

方法二:使用inplace=True参数原地修改

df_pk['f2'].fillna(df_pk.groupby('y')['f2'].transform('mean'), inplace=True)

填充后结果说明

  • y=1分组的f2非缺失值为[2,6,14,16],均值为9.5,对应两个NaN会被填充为9.5
  • y=0分组的f2无缺失值,保持原数据[8,10]
  • 最终f2列结果:[2, 9.5, 6, 8, 10, 9.5, 14, 16]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:33:15