2017-04-10 120 views
1

我有一個多索引數據框,外層索引由股票名稱組成,內層索引由日期組成。並列多索引數據幀

     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]) 

的變化,但似乎無法找到一個解決方案。

+1

我所知道的暗示第一變化應該工作。 – piRSquared

回答

2

我認爲你需要concatsort_index

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 
+0

這似乎工作。然而,奇怪的是,這些列的順序已經發生了變化,就像在新的df中混淆了一樣。我得到了Index(['15_Avg_Vol','20_Avg_Vol','30_Avg_Vol','5days','7days', '7days_10daysAvg','9_Avg_Vol','Adj Close','Close','Daily_Change', '高','低','打開','音量','變' dtype ='object'僅限於OP以上)。然而,它們都以'['Open','High','Low','Close','Volume']'開頭,所以不知道爲什麼訂單會改變。 – Moondra