2014-08-29 63 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