python - 从数据框中的其他记录中填充 NaN 并过滤唯一记录
问题描述
我有以下df:
df4 = pd.DataFrame(np.array([['cus1234', 'Sara@example.com','Mexico', np.NaN],['cus1234', np.NaN ,'Mexico','348384'],['cus1234', 'Sara@example.com',np.NaN ,'348384'],['cus1234', 'Sara@example.com','Mexico', np.NaN], ['cus930', 'fernandino@example.com','US', np.NaN ], ['cus930', 'fernandino@example.com',np.NaN,'38483483'],['cus930', 'fernandino@example.com',np.NaN ,'38483483'],['cus800033132', 'dumm@example.com','US',np.NaN ],['cus800033132', 'dumm@example.com','US','300309494994']]),
columns=['CustomerID', 'email','Country','phone'])
df4:
CustomerID email Country phone
0 cus1234 Sara@example.com Mexico nan
1 cus1234 nan Mexico 348384
2 cus1234 Sara@example.com nan 348384
3 cus1234 Sara@example.com Mexico nan
4 cus930 fernandino@example.com US nan
5 cus930 fernandino@example.com nan 38483483
6 cus930 fernandino@example.com nan 38483483
7 cus800033132 dumm@example.com US nan
8 cus800033132 dumm@example.com US 300309494994
CustomerID 重复但客户信息不完整。如果找到每个 CustomerID,我想填充 NaN,然后删除重复的drop_duplicates()
到目前为止我做了什么:
df4.groupby(['CustomerID']).fillna(method='ffill')
df4.groupby(['CustomerID'], sort=False).apply(lambda x: x.ffill().bfill())
但没有运气,预期的输出:
CustomerID email Country phone
cus1234 Sara@example.com Mexico 348384
cus930 fernandino@example.com US 38483483
cus800033132 dumm@example.com US 300309494994
解决方案
尝试:
用实际的 NaN 替换字符串 nan:
df4=df4.replace('nan',float('NaN'))
最后:
out=df4.groupby(['CustomerID']).ffill().bfill().drop_duplicates().join(df4['CustomerID'])
输出out
:
email Country phone CustomerID
0 Sara@example.com Mexico 348384 cus1234
4 fernandino@example.com US 38483483 cus930
7 dumm@example.com US 300309494994 cus800033132
推荐阅读
- python - 如何限制 aws lambda 在失败时执行的次数?
- coldfusion - 尝试从 api 响应下载图像文件
- swift - 跳出 For 语句并仍然允许完成处理程序成功完成
- algorithm - O(n*logn) -- 无法理解前缀 (n-1)
- arrays - 如何使用 *ngFor 在 typescript 中显示分组数据
- c++ - 按下键盘时 SFML 精灵不移动
- python-3.x - 在 Python/Django 中,如何配置默认测试设置?
- asp.net-core - .net core大文件上传方法
- python - TensorFlow2 替代 tf.io.gfile.Open()?
- flutter - 颤动网络中的多行文本字段问题?