微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据另一列中的1,2,3类在一个列中用所需值替换NaN值

如何解决根据另一列中的1,2,3类在一个列中用所需值替换NaN值

我正在使用fillna()函数根据“ Pclass”列中的给定类替换“年龄”列中的NaN值。我正在使用的代码可以成功运行,没有任何错误,但是,数据集中没有任何变化。那里存在相同的NaN值。我的代码如下。

train_data['Age'][train_data['Pclass']==1].fillna(38,inplace=True)
train_data['Age'][train_data['Pclass']==2].fillna(29,inplace=True)
train_data['Age'][train_data['Pclass']==3].fillna(24,inplace=True)

解决方法

这是因为您要在一片数据集上填充na。因此,即使使用inplace,原始数据集也不会更改。

使用for循环的一种方法:

# train_data
   Age  Pclass
0  NaN       1
1  NaN       2
2  NaN       3

for p,v in zip([1,2,3],[38,29,24]):
    train_data.loc[train_data["Pclass"].eq(p),"Age"] = train_data.loc[train_data["Pclass"].eq(p),"Age"].fillna(v)
print(train_data)

输出:

    Age  Pclass
0  38.0       1
1  29.0       2
2  24.0       3

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。