2014-08-29 88 views
1

DF1:Combine_first和空值在熊猫

 
    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

下面是一个hacky的方式来做到这一点。首先,将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