首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法将Dataframe中的特定值分别替换为其他值?

有没有办法将Dataframe中的特定值分别替换为其他值?
EN

Stack Overflow用户
提问于 2020-06-25 01:29:54
回答 1查看 39关注 0票数 0

我目前正在做一个机器学习项目,我必须用每列的均值替换-99值(nan)。但是,我不能设法替换正确的值,只能替换所有列中的第一个值。因此,我需要的是每列的平均值,而不是该列的-99。

我首先给出每一列的均值:

代码语言:javascript
运行
复制
mean_miss = []

for i in df_train[vars_ind_numeric]:
    mean_miss = df_train[vars_ind_numeric].mean()

然后传递:

代码语言:javascript
运行
复制
for var in df_train[vars_ind_numeric]:
        df_train[vars_ind_numeric]=df_train[vars_ind_numeric]\
        .replace(nan, mean_miss[var])

有什么办法解决这个问题吗?提前感谢

EN

回答 1

Stack Overflow用户

发布于 2020-06-25 01:49:05

如果你要找的是用列均值填充每一列中的NA值,这里有一个解决方案(对于虚拟数据):

代码语言:javascript
运行
复制
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

生成的数据为:

代码语言:javascript
运行
复制
     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

平均值为:

代码语言:javascript
运行
复制
print(df.mean())
a     3.875000
b    14.222222
dtype: float64

现在,进行实际的计算:

代码语言:javascript
运行
复制
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.000000
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62560799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档