我从数据源的不同来源下载了数据,并希望将它们合并到一个最终的DataFrame中。让我们用以下示例说明它:
数据框1 (已经有多索引列)
index stockA stockB ...
O L H C O L H C
1/1/19 10 15 20 17 35 30 39 37
2/1/19 ... ...
...
数据框2 (非多索引列)
index stockA stockB
1/1/19 1.5 3.2
2/1/19 ... ...
...
我想合并两个dataframe并为dataframe2中的数据指定列名。在两个数据框中索引日期可能都不相同,因此我可能需要进行内部合并。
预期输出(多索引列)
index stockA stockB ...
O L H C new_col O L H C new_col
1/1/19 10 15 20 17 1.5 35 30 39 37 3.2
2/1/19 ... ...
...
答案 0 :(得分:0)
使用:
%%A
如有必要,将两个print (df1)
stockA stockB
O L H C O L H C
1/1/19 10 15 20 17 35 30 39 37
2/1/19 12 13 26 27 31 50 29 17
print (df2)
stockA stockB
2/1/19 1.5 3.2
3/1/19 1.2 6.2
中的索引都转换为index
:
datetime
通过Index.intersection
在两个索引中获得相同的值:
df1.index = pd.to_datetime(df1.index, format='%d/%m/%y')
df2.index = pd.to_datetime(df2.index, format='%d/%m/%y')
在idx = df1.index.intersection(df2.index)
print (idx)
DatetimeIndex(['2019-01-02'], dtype='datetime64[ns]', freq=None)
的{{3}}中创建MultiIndex
:
df2
通过MultiIndex.from_product
过滤两个DataFrame,通过DataFrame.loc
联接在一起,最后通过DataFrame.join
排序df2.columns = pd.MultiIndex.from_product([df2.columns, ['new']])
print (df2)
stockA stockB
new new
2019-01-02 1.5 3.2
2019-01-03 1.2 6.2
:
MultiIndex