我目前正在做一个机器学习项目,我必须用每列的均值替换-99值(nan)。但是,我不能设法替换正确的值,只能替换所有列中的第一个值。因此,我需要的是每列的平均值,而不是该列的-99。
我首先给出每一列的均值:
mean_miss = []
for i in df_train[vars_ind_numeric]:
mean_miss = df_train[vars_ind_numeric].mean()然后传递:
for var in df_train[vars_ind_numeric]:
df_train[vars_ind_numeric]=df_train[vars_ind_numeric]\
.replace(nan, mean_miss[var])有什么办法解决这个问题吗?提前感谢
发布于 2020-06-25 01:49:05
如果你要找的是用列均值填充每一列中的NA值,这里有一个解决方案(对于虚拟数据):
df = pd.DataFrame({"a": range(10), "b": range(10, 20)})
df.loc[5, "a"] = np.NaN
df.loc[9, "a"] = np.NaN
df.loc[7, "b"] = np.NaN生成的数据为:
a b
0 0.0 10.0
1 1.0 11.0
2 2.0 12.0
3 3.0 13.0
4 4.0 14.0
5 NaN 15.0
6 6.0 16.0
7 7.0 NaN
8 8.0 18.0
9 NaN 19.0平均值为:
print(df.mean())
a 3.875000
b 14.222222
dtype: float64现在,进行实际的计算:
df.fillna(df.mean())
a b
0 0.000 10.000000
1 1.000 11.000000
2 2.000 12.000000
3 3.000 13.000000
4 4.000 14.000000
5 3.875 15.000000
6 6.000 16.000000
7 7.000 14.222222
8 8.000 18.000000
9 3.875 19.000000https://stackoverflow.com/questions/62560799
复制相似问题