我有两个具有相同列的数据框。第二列是第一列索引值的子集,但其中一些列具有空白字段,而其他列则具有更新的信息。
例:
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