Skip to main content
 首页 » 编程设计

python之取消堆叠和交换 Pandas 的水平

2025年05月04日10xing901022

我有一个类似

的 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 

如何交换列轴中的水平?

请您参考如下方法:

既然你提到了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