Pandas - df.fillna(df.mean())没有处理多索引DataFrame

时间:2018-03-22 04:13:04

标签: python pandas bigdata

这是我的代码:

df.head(20)
df = df.fillna(df.mean()).head(20)

结果如下:

enter image description here

有很多NaN

我想用平均数替换NaN,我用df.fillna(df.mean()),但没用。

问题是什么?

4 个答案:

答案 0 :(得分:1)

我有它!在替换NaN号码之前,我需要先重置索引。 以下是代码:

df = df.reset_index()
df = df.fillna(df.mean())

现在一切都还好!

答案 1 :(得分:0)

DataFrame中的每一列都至少有一个非数字值(在行#0和部分#1中)。将.mean()应用于DataFrame时,它会跳过所有非数字列(在您的情况下,所有列)。因此,NaN s不会被替换。解决方案:删除非数字行。

答案 2 :(得分:0)

这对我有用

for i in df.columns:
  df.fillna(df[i].mean(),inplace=True)

答案 3 :(得分:0)

我认为问题可能是您的列不是 float 或 int 类型。检查 df.dtypes。如果返回对象则意味着将不起作用。使用 df.astype() 更改类型