我得到了一个包含许多 NaN 值的数据集,我想用每列的平均值填充空值。所以我尝试了以下代码:
def fill_mean():
m = [df.columns.get_loc(c) for c in df.columns if c in missing]
for i in m:
df[df.columns[i]] =df[df.columns[i]].fillna(value=df[df.columns[i]].mean())
return df
但我收到此错误:
TypeError: must be str, not int
我要填充的列都是由相同的类型组成的:要么是“float64”,要么是“O”。
我怀疑问题源于这个事实,但我该如何解决呢?
编辑:我创建了一个包含列的字典,该列包含缺少某些数据的列的索引和每列的类型。
di = dict(zip(missing, m2))
def fill_mean():
m = [df.columns.get_loc(c) for c in df.columns if c in missing]
for i in m:
if di[m] == "dtype('float64')":
df[df.columns[i]] = df[df.columns[i]].fillna(value=df[df.columns[i]].mean())
return df
如果我运行 fill_mean(),现在我得到一个不同的错误:
if di[m] == "dtype('float64')":
TypeError: unhashable type: 'list'