Pandas 包含多索引数据帧

Pandas 包含多索引数据帧,pandas,concatenation,multi-index,Pandas,Concatenation,Multi Index,我有一个多索引数据框架,外层索引由股票名称组成,内层索引由日期组成 Open High Low Close AAPL 2010-01-04 213.429998 214.499996 212.380001 214.009998 2010-01-08 210.299994 212.000006 209.060005 211.980005 OPK 2010-01-

我有一个多索引数据框架,外层索引由股票名称组成,内层索引由日期组成

                     Open        High        Low         Close
AAPL    2010-01-04  213.429998  214.499996  212.380001  214.009998  
        2010-01-08  210.299994  212.000006  209.060005  211.980005

OPK     2010-01-04  213.429998  214.499996  212.380001  214.009998  
        2010-01-08  210.299994  212.000006  209.060005  211.980005
我有一个新的数据框,其中一些日期没有包含在原始数据框中,我想附加它们

                       Open          High        Low         Close

AAPL    2010-01-09  219.429998  219.499996  212.380001  214.009998  
        2010-01-10  219.299994  219.000006  209.060005  211.980005

OPK     2010-01-09  219.429998  219.499996  212.380001  214.009998  
        2010-01-10  219.299994  219.000006  209.060005  211.980005
所以我想要的结果是

                      Open       High        Low         Close
AAPL    2010-01-04  213.429998  214.499996  212.380001  214.009998  
        2010-01-08  210.299994  212.000006  209.060005  211.980005
        2010-01-09  219.429998  219.499996  212.380001  214.009998  
        2010-01-10  219.299994  219.000006  209.060005  211.980005

        2010-01-04  213.429998  214.499996  212.380001  214.009998  
        2010-01-08  210.299994  212.000006  209.060005  211.980005
OPK     2010-01-09  219.429998  219.499996  212.380001  214.009998  
        2010-01-10  219.299994  219.000006  209.060005  211.980005
我试过这些的变体

    pd.concat([stocks_df, df])
    pd.concat([stocks_df, df], levels = [stocks_df.index] )
但似乎找不到解决办法

我认为您需要:


据我所知,第一种变体应该有效。这似乎有效。然而,奇怪的是,列的顺序又变了,就像在新的df中的mixed-up一样。我得到了
索引(['15\u Avg\u Vol','20\u Avg\u Vol','30\u Avg\u Vol','5days','7days','7days\u 10daysAvg','9\u Avg\u Vol','Adj Close','Close','Daily\u Change','High','Low','Open Volume','changed'
dtype='object我关注的
df越小,列就越少(仅上面OP中的列)但是,它们都以
['Open'、'High'、'Low'、'Close'、'Volume']
开头,因此不确定更改订单的原因。
df = pd.concat([stocks_df, df]).sort_index()
print (df)
                       Open        High         Low       Close
AAPL 2010-01-04  213.429998  214.499996  212.380001  214.009998
     2010-01-08  210.299994  212.000006  209.060005  211.980005
     2010-01-09  219.429998  219.499996  212.380001  214.009998
     2010-01-10  219.299994  219.000006  209.060005  211.980005
OPK  2010-01-04  213.429998  214.499996  212.380001  214.009998
     2010-01-08  210.299994  212.000006  209.060005  211.980005
     2010-01-09  219.429998  219.499996  212.380001  214.009998
     2010-01-10  219.299994  219.000006  209.060005  211.980005