我有一个多索引数据框,外层索引由股票名称组成,内层索引由日期组成。
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] )
但似乎无法找到解决方案。
答案 0 :(得分:2)
我认为concat
需要sort_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