我目前正在做一个机器学习项目,我必须用每列的均值替换-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
复制相似问题