如何从多个数据框架创建层次多索引数据框架?



我有多个相同形状的数据帧,例如:

d1 = {'time': [1,2,3,4], 'A': [55.5,55.5,55.5,55.5], 'B':[55.5,55.5,55.5,55.5]}
d2 = {'time': [1,2,3,4], 'A': [7,6,5,4], 'B':[9,8,7,6]}
d3 = {'time': [1,2,3,4], 'A': [1,2,3,4], 'B':[2,3,4,5]}
df1 = pd.DataFrame(data = d1)
df2 = pd.DataFrame(data = d2)
df3 = pd.DataFrame(data = d3)

它们将始终具有相同的列名和"时间"中的条目。列总是相同的。我想以一种方式合并它们,得到一个层次索引,即

index  frame     'time'    'A'       'B'
0      1         1         55.5      55.5
2         1         7         9
3         1         1         2
1      1         2         55.5      55.5
2         2         6         8
3         2         2         3
...

我已经尝试了。merge()和。join()和。concatenate()与各种选项,但我似乎无法将我的头围绕它。实现这一目标的最优雅的方式是什么?

iuc,您可以对索引进行连接和排序:

dfs = [df1, df2, df3]
(pd
.concat(dict(enumerate(dfs, start=1)), names=['frame', 'index'])
.sort_index(level='index')
.swaplevel()
)

输出:

time     A     B
index frame                  
0     1         1  55.5  55.5
2         1   7.0   9.0
3         1   1.0   2.0
1     1         2  55.5  55.5
2         2   6.0   8.0
3         2   2.0   3.0
2     1         3  55.5  55.5
2         3   5.0   7.0
3         3   3.0   4.0
3     1         4  55.5  55.5
2         4   4.0   6.0
3         4   4.0   5.0

最新更新