如何解决根据另一列中的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 举报,一经查实,本站将立刻删除。