我有一个像
这样的pandas数据框id cat v1 v2
36 A 1 2
36 B 3 4
36 C 5 6
97 A 7 8
97 B 9 10
97 C 11 12
我发现使用set_index()
和unstack()
我得到了
df.set_index(['code', 'cat']).unstack()
v1 v2
code A B C A B C
id
36 1 3 5 2 4 6
97 7 9 11 8 10 12
但我想要
A B C
code v1 v2 v1 v2 v1 v2
id
36 1 2 3 4 5 6
97 7 8 9 10 11 12
如何交换列轴中的水平?
答案 0 :(得分:6)
您提到swaplevel
df.set_index(['id', 'cat']).unstack().swaplevel(0,1,axis=1).sort_index(axis=1)
Out[765]:
cat A B C
v1 v2 v1 v2 v1 v2
id
36 1 2 3 4 5 6
97 7 8 9 10 11 12
答案 1 :(得分:3)
您还可以转置和取消堆叠特定图层
df.set_index(['cat', 'id']).T.stack().unstack(0)
cat A B C
v1 v2 v1 v2 v1 v2
id
36 1 2 3 4 5 6
97 7 8 9 10 11 12