我正在尝试预处理一些数据以用于机器学习目的。我目前正在尝试清理一些 NaN 值,并将它们替换为“未知”和基于列名称的前缀或后缀。原因是当我使用一种热编码时,我不能将多个具有相同名称的列输入到 xgboost 中。所以我有以下内容df = df.apply(lambda x: x.replace(np.nan, 'unknown'))我想用“unknown_columname”替换 df 中 NaN 的所有实例。有没有简单或简单的方法可以做到这一点?
2 回答
![?](http://img1.sycdn.imooc.com/545862120001766302200220-100-100.jpg)
呼啦一阵风
TA贡献1802条经验 获得超6个赞
尝试一下df = df.apply(lambda x: x.replace(np.nan, f'unknown_{x.name}'))
。
您也可以使用df = df.apply(lambda x: x.fillna(f'unknown_{x.name}')
.
![?](http://img1.sycdn.imooc.com/533e4d470001a00a02000200-100-100.jpg)
红糖糍粑
TA贡献1815条经验 获得超6个赞
首先,让我们创建备份数组,以便在有缺失值时进行填充
s = np.core.defchararray.add('unknown',df.columns.values)
然后我们可以简单地将每个 NaN 替换为 s 中的正确值:
cols = df.columns.values for col_name in cols: df.col_name.fillna(s, inplace=True)
添加回答
举报
0/150
提交
取消