2013-12-20 148 views
8

我一直在我的頭撞我的桌子上這一個,不知道是否有辦法,也許我正在嘗試一些不可能的事情。我有兩個數據框與MultiIndex列(三個級別)和時間索引(單一級別)。首先是這樣的:合併/加入/追加兩個熊貓數據框與MultiIndex列索引和列

border   a-b     c-d 
from    a   b   c 
to     b   a   d 
2009-03-01 -0.778346 -0.928997  NaN 
2009-03-02 -1.352559 1.247335  NaN 
2009-03-03 -0.967939 0.432638  NaN 
2009-03-04 0.786094 -2.209559  NaN 
2009-03-05 -0.001338 1.084152  NaN 
2009-03-06 1.163334  NaN  NaN 
2009-03-07 -0.587593  NaN  NaN 
2009-03-08 0.118469  NaN  NaN 
2009-03-09  NaN  NaN -1.272959 
2009-03-10  NaN  NaN -1.207129 
2009-03-11  NaN  NaN 0.244019 

對此DF我想補充以下內容:

border   a-b 
from    a 
to     b 
2009-03-09 1.243296 
2009-03-10 -0.049870 
2009-03-11 1.599999 

考慮到行和列的索引。結果應該是:

border   a-b     c-d 
from    a   b   c 
to     b   a   d 
2009-03-01 -0.778346 -0.928997  NaN 
2009-03-02 -1.352559 1.247335  NaN 
2009-03-03 -0.967939 0.432638  NaN 
2009-03-04 0.786094 -2.209559  NaN 
2009-03-05 -0.001338 1.084152  NaN 
2009-03-06 1.163334  NaN  NaN 
2009-03-07 -0.587593  NaN  NaN 
2009-03-08 0.118469  NaN  NaN 
2009-03-09 1.243296  NaN -1.272959 
2009-03-10 -0.049870  NaN -1.207129 
2009-03-11 1.599999  NaN 0.244019 

我已經嘗試了幾種方法,包括與合併和加入,但不能得到它的工作。

任何想法?提前致謝。

P.S.我可以發佈我用來生成上面兩個DF的代碼,如果這有幫助,但有點長。但無論如何,我正在尋找一個通用的答案,列的確切名稱或行的索引是不相關的(甚至可能是一個整數索引)。

回答

5

使用非NA從傳遞數據框中值嘗試pandas.DataFrame.update

DataFrame.update(other, join='left', overwrite=True, 
       filter_func=None, raise_conflict=False) 

修改數據框中到位。對齊指數

+0

完美,謝謝。沒有意識到這種方法。 – David

+1

在v0.13.1中,除了left之外,它不支持任何其他連接方法......如果它有「outer」,這將是我正在尋找的確切事物! – PhilMacKay