我有两个具有相同索引和数据的数据帧。列。 (x,y)
>>> x
A B
0 A0 B0
1 A1 B1
>>> y
A B
0 A2 B2
1 A3 B3
我发现了如何使用多索引连接两个数据帧,如下所示。 (z)的
>>> z = pd.concat([x, y], keys=['x', 'y'], axis=1)
>>> z
x y
A B A B
0 A0 B0 A2 B2
1 A1 B1 A3 B3
但我想制作以下格式的数据帧(目标)
>>> target
A B
x y x y
0 A0 A2 B0 B2
1 A1 A3 B1 B3
我有两个问题
感谢您考虑我的问题。
答案 0 :(得分:2)
z = pd.concat([x, y], keys=['x', 'y'], axis=1).swaplevel(0,1, axis=1).sort_index(axis=1)
print (z)
A B
x y x y
0 A0 A2 B0 B2
1 A1 A3 B1 B3
对于另一个答案,可以为键定义dictionary of DataFrames
:
z = pd.concat({'x':x, 'y':y}, axis=1).swaplevel(0,1, axis=1).sort_index(axis=1)
答案 1 :(得分:2)
我最近刚刚学习reorder_levels
: - )
pd.concat([x,y],keys=['x','y'],axis=1).reorder_levels([1,0],axis=1).sort_index(axis=1)
Out[449]:
A B
x y x y
0 A0 A2 B0 B2
1 A1 A3 B1 B3