我有多个相同形状的数据帧,例如:
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