pandas函数根据匹配列填充其他数据帧中的缺失值?

时间:2016-06-28 22:00:55

标签: python python-3.x pandas dataframe

所以我有两个数据框:一个填充某些列,一个填充其他列,但缺少前一个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中需要的两个数据帧中添加不匹配的结果。我还更新了我的上一个问题以反映这一点。

1 个答案:

答案 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