python - 使用 NaN 合并列
问题描述
我正在尝试在 Pandas 中清理一个非常大的数据框。
我有标记为 currentAge、currentAge2、sex、sex2、height、height2、weight、weight2 的列。对于某些行,currentAge 有一个值,而对于其他行,currentAge2 有一个 NaN。它也可以采用另一种方式,对于某些行,currentAge2 有一个值,currentAge 有一个 NaN。其他指标性别、体重和身高也是如此。
我想将常用指标合并在一起,如 currentAge 和 currentAge2,以便有一列 currentAge 没有 NaN。
我该怎么做呢?
解决方案
你需要使用fillna
. 让我们考虑这个数据框,其中一些年龄在 currentAge 列中,而另一些在 currentAge2 列中:
df = pd.DataFrame({'currentAge':[np.nan, 12, 15, 16, np.nan],
'currentAge2':[8, np.nan, np.nan, np.nan, 24]})
currentAge currentAge2
0 NaN 8.0
1 12.0 NaN
2 15.0 NaN
3 16.0 NaN
4 NaN 24.0
然后你可以做的是:df['currentAge'] = df['currentAge'].fillna(df['currentAge2'])
用第二列的值填充nan
第一列,然后你得到:
currentAge currentAge2
0 8.0 8.0
1 12.0 NaN
2 15.0 NaN
3 16.0 NaN
4 24.0 24.0
要删除 currentAge2 列,然后执行此操作df = df.drop('currentAge2',1)
,您将填充一个简单的 currentAge 列。
推荐阅读
- swift - .NET CORE 2.1.403 SignalR 官方支持 Swift
- ibm-watson - botkit 中的交互消息
- database - 错误 Jparepository java.lang.IllegalArgumentException
- javascript - 赛普拉斯:具有三个不同响应的相同路由的存根响应
- sql - SQL 中的动态子字符串
- c++ - 重复下单后总价会累积但产生错误值
- sql - 获取组的公共列值
- twitter-bootstrap - Bootstrap 4 灵活网格在 IE 中不起作用
- sqlite - 就 SQLite 搜索中的字数而言,两个搜索字符串之间的距离?
- amazon-web-services - 使用有限的 IAM 角色用户创建 EB 环境