python - 从同一组的其他记录中的值替换熊猫数据框中的 NAN 值
问题描述
我有一个数据框df
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [np.nan, 1, 2,np.nan,2,np.nan,np.nan],
'B': [10, np.nan, np.nan,5,np.nan,np.nan,7],
'C': [1,1,2,2,3,3,3]})
看起来像:
A B C
0 NaN 10.0 1
1 1.0 NaN 1
2 2.0 NaN 2
3 NaN 5.0 2
4 2.0 NaN 3
5 NaN NaN 3
6 NaN 7.0 3
我想替换 column 中的所有 NAN 值A
以及B
来自与 column 中提到的同一组的其他记录中的值C
。
我的预期输出是:
A B C
0 1.0 10.0 1
1 1.0 10.0 1
2 2.0 5.0 2
3 2.0 5.0 2
4 2.0 7.0 3
5 2.0 7.0 3
6 2.0 7.0 3
我怎样才能在熊猫数据框中做同样的事情?
解决方案
GroupBy.apply
与前向和后向填充缺失值一起使用:
df[['A','B']] = df.groupby('C')['A','B'].apply(lambda x: x.ffill().bfill())
print (df)
A B C
0 1.0 10.0 1
1 1.0 10.0 1
2 2.0 5.0 2
3 2.0 5.0 2
4 2.0 7.0 3
5 2.0 7.0 3
6 2.0 7.0 3
推荐阅读
- svg - 从单个 svg 文件注册多个 svg 图标 mat-icons
- azure - 将 Microsoft Bot Framework Bot 限制为特定 AD 租户
- node.js - 缓存服务方法的返回值
- python - 为什么 line.split('\t')[1] 不等于 0?
- c# - 根据需要验证正文中的不可为空属性 - AspNetCore 3.1
- regex - 带有反向引用的反向正则表达式
- heroku - 当我想在 Heroku 上托管我的 Discord.py 机器人但它给了我这个
- html - 角度图像加载
- matlab - 如何连接坐标并填充区域以创建二进制掩码?
- javascript - 无法在锚标记数据模板中传递 JSON 对象