这是我的代码:
df.head(20)
df = df.fillna(df.mean()).head(20)
结果如下:
有很多NaN
。
我想用平均数替换NaN
,我用df.fillna(df.mean())
,但没用。
问题是什么?
答案 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() 更改类型