2013-12-20 11 views
8

私はこの上に私の机に対して頭を叩いています。道があるかどうかわからないかもしれません。インデックスとコラムの両方でMultiIndexの列を持つ2つのパンダのデータフレームを追加

私はMultiIndex列(3レベル)と時間インデックス(単一レベル)を持つ2つのDataFramesを持っています。最初はこのようなものです:このDFに

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 

は、私は以下を追加したい:

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.上記の2つの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以外の他の結合方法をサポートしていません... "外側"があった場合、これは私が探している正確なものです! – PhilMacKay

関連する問題