[英]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.