我有两个数据框
sessions = DataFrame({"ID":[1,2,3,4,5],"2018-06-30":[23,34,45,67,75],"2018-07-31":[32,43,45,76,57]})
leads = DataFrame({"ID":[1,2,3,4,5],"2018-06-30":[7,10,28,15,30],"2018-07-31":[7,10,28,15,30]})
我想合并ID上的两个数据框,然后创建一个多索引,如下所示:
我该怎么做?
直接的pandas.merge会创建我不想要的后缀_x,_y.
解决方法:
在两个DataFrame中将concat
与ID一起使用set_index
,然后将swaplevel
与sort_index
一起用于列中的预期MultiIndex:
df = (pd.concat([sessions.set_index('ID'),
leads.set_index('ID')],
axis=1,
keys=['sessions','leads'])
.swaplevel(0,1,axis=1)
.sort_index(axis=1, ascending=[True, False])
)
print (df)
2018-06-30 2018-07-31
sessions leads sessions leads
ID
1 23 7 32 7
2 34 10 43 10
3 45 28 45 28
4 67 15 76 15
5 75 30 57 30