我有两个具有相同列的数据框。第二列是第一列索引值的子集,但其中一些列具有空白字段,而其他列则具有更新的信息。

例:

dfa:

         Height    Weight   Age   Street  PhoneNumber

Pete       5.2       130     33    Pine    123-456-7890
Mary       5.0       110     34    Main    434-444-5555
Rob        6.0       230     44    Maple   999-444-2222
....


dfb:

        Height    Weight   Age   Street  PhoneNumber

Pete      Nan        125     Nan    Arbor      Nan
Rob       Nan        235     45     Nan    776-333-3222


我想用dfa中的新信息更新dfb中的字段。如果没有来自dfb的更新(字段为Nan),我想将原始值保留在dfa中。

我能想到的唯一方法是按行和列进行迭代,找到dfb中的元素,然后将dfa中的对应地址设置为等于dfb中的地址。丑陋。

有没有更清洁的(和更多的pythonic)方法来做到这一点?

提前致谢。

编辑:为清楚起见,更改了dfb。这两个df没有相同的索引。 dfb是dfa的子集。

最佳答案

您需要的是combine_first,确保那些“ Nan”首先是np.nan:

dfb = dfb.replace('Nan',np.nan)
dfb.combine_first(dfa)


输出:

      Height Weight Age Street   PhoneNumber
Pete     5.2    125  33  Arbor  123-456-7890
Mary     5.0    110  34   Main  434-444-5555
Rob      6.0    235  45  Maple  776-333-3222

10-05 23:30