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

均值插补后DataFrame出现None和NaN问题求助

问题分析与解决

错误原因拆解

第一种方法的问题

  1. 先执行df.replace(np.nan,0, inplace=True )已经把所有NaN替换成了0,后续fillna找不到任何NaN可以填充,完全没必要再执行填充操作。
  2. 同时使用df['col1'] = ...和inplace=True是错误的:当fillna设置inplace=True时,它会直接修改原DataFrame的列,返回值是None,这时候把None赋值给df['col1'],就会导致整列变成NaN。

第二种方法的问题

同样犯了「同时赋值+inplace=True」的错误:fillna加inplace=True后返回None,你把这个None赋值给df['col1'],自然整列变成None。

正确的均值填充方法

你只需要二选一即可:

方式1:不使用inplace,直接赋值

# 直接对col1和col2填充均值,不需要先替换0
df['col1'] = df['col1'].fillna(df['col1'].mean())
df['col2'] = df['col2'].fillna(df['col2'].mean())

方式2:使用inplace,不赋值

# 直接修改原列,无需赋值
df['col1'].fillna(df['col1'].mean(), inplace=True)
df['col2'].fillna(df['col2'].mean(), inplace=True)

批量填充两列的简化写法

如果要同时处理两列,还可以用更简洁的方式:

df[['col1', 'col2']] = df[['col1', 'col2']].fillna(df[['col1', 'col2']].mean())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:04:54