DF1:
0 1 0 nan 3.00 1 -4.00 nan 2 nan 7.00
DF2:
0 1 2 1 -42.00 nan 8.00 2 -5.00 nan 4.00
df3 = df1.combine_first(df2)
DF3:
0 1 2 0 nan 3.00 nan 1 -4.00 nan 8.00 2 -5.00 7.00 4.00
这就是我想要的df3:
0 1 2 0 nan 3.00 nan 1 -4.00 nan 8.00 2 nan 7.00 4.00
(差异在df3.ix[2:2,0:0]
)
也就是说,如果df1和df2中的任何单元格的列和索引相同,我希望df1的值为准,即使该值为nan
。 combine_first
会这样做,除非df1中的值为nan
。
答案 0 :(得分:1)
这是一种做到这一点的黑客方式。首先,将df2
与df1
对齐,这会创建一个以df1
/ df2
的联合索引的框架,并填充df2的值。然后分配回df1的值。
In [325]: df3, _ = df2.align(df1)
In [327]: df3.loc[df1.index, df1.columns] = df1
In [328]: df3
Out[328]:
0 1 2
0 NaN 3 NaN
1 -4 NaN 8
2 NaN 7 4