Pandas中的Combine_first和null值

时间:2014-08-29 00:40:25

标签: python pandas

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的值为准,即使该值为nancombine_first会这样做,除非df1中的值为nan

1 个答案:

答案 0 :(得分:1)

这是一种做到这一点的黑客方式。首先,将df2df1对齐,这会创建一个以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