合并具有多个索引列的DataFrame

时间:2019-03-16 10:05:08

标签: python pandas dataframe

我从数据源的不同来源下载了数据,并希望将它们合并到一个最终的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       ...                     ...
...

1 个答案:

答案 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