[英]How to create hiearchical multi-index dataframe from multiple dataframes?
我有多个形状相同的数据框,比如:
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(),但我似乎无法理解它。 实现这一目标的最优雅的方法是什么?
IIUC,您可以对索引进行连接和排序:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.