所以我有两个数据框:一个填充某些列,一个填充其他列,但缺少前一个df中的一些。两者都共享一些常见的非空列。
DF1:
FirstName Uid JoinDate BirthDate
Bob 1 20160628 NaN
Charlie 3 20160627 NaN
DF2:
FirstName Uid JoinDate BirthDate
Bob 1 NaN 19910524
Alice 2 NaN 19950403
Result:
FirstName Uid JoinDate BirthDate
Bob 1 20160628 19910524
Alice 2 NaN 19950403
Charlie 3 20160627 NaN
假设这些行不在各自的数据帧中共享索引位置,有没有办法可以用DF2中的值填充DF1中的缺失值,其中行匹配某个列(在本例中为Uid)? / p>
此外,如果在该列上没有匹配(例如Uid)而没有移除DF1中与DF2中的任何行不匹配的行,是否有办法在DF1中创建DF1中的新条目?
编辑:我更新了数据帧,在结果df中需要的两个数据帧中添加不匹配的结果。我还更新了我的上一个问题以反映这一点。
答案 0 :(得分:3)
更新:您可以设置正确的索引并最终重置已加入DF的索引:
In [14]: df1.set_index('FirstName').combine_first(df2.set_index('FirstName')).reset_index()
Out[14]:
FirstName Uid JoinDate BirthDate
0 Alice 2.0 NaN 19950403.0
1 Bob 1.0 20160628.0 19910524.0
2 Charlie 3.0 20160627.0 NaN
试试这个:
In [113]: df2.combine_first(df1)
Out[113]:
FirstName Uid JoinDate BirthDate
0 Bob 1 20160628.0 19910524
1 Alice 2 NaN 19950403