将列设置为列的第二个索引

时间:2019-11-14 22:09:42

标签: python pandas

我有一个看起来像这样的多索引数据框

                       Pool Lab_ID    Units  ...        CV%        CV        SEM
Analysis_panel analyte                       ...                                
OXID           F2A12I     A   M       ng/mL  ...   6.111037  0.061110   0.098823
               F2A12I     B   M       ng/mL  ...   3.620595  0.036206   0.050259
               F2A23D     A   N       ng/mL  ...   6.631863  0.066319   0.020186
               F2A23D     B   N       ng/mL  ...   6.150949  0.061509   0.021566
               F2A8IP     B   M       ng/mL  ...   2.227108  0.022271   0.002000
                    ...    ...      ...  ...        ...       ...        ...
VOCs           HPMA       B   N       pmol/mL  ...   4.444958  0.044450  27.313001
               HPMA2      A   N       pmol/mL  ...  14.437254  0.144373  16.838646
               HPMA2      B   M       pmol/mL  ...  15.010317  0.150103  21.588423
               SPMA       A   M       pmol/mL  ...  12.959157  0.129592   0.041438
               SPMA       B   N       pmol/mL  ...  11.961421  0.119614   0.054991

[276 rows x 11 columns]

我想获取Lab_ID列并将其设置为另一种列索引-我希望我的最终df的结构如下

                                M                        N
                       Pool   Units  ... SEM    Pool   Units  ... SEM
Analysis_panel analyte                                                     
OXID           F2A12I     
               F2A12I     
               F2A23D     
               F2A23D    
               F2A8IP     
                    ...    ...      ...  ...      ...       ...        ...
VOCs           HPMA       
               HPMA2      
               HPMA2      
               SPMA       
               SPMA       

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:0)

这将起作用,尽管不会产生确切的预期输出:

(df.set_index(['Pool', 'Lab_ID'], append=True)
   .unstack('Lab_ID')
)

输出:

                               Units                  CV%              \
Lab_ID                             M        N           M           N   
Analysis_panel analyte Pool                                             
OXID           F2A12I  A       ng/mL      NaN   6111037.0         NaN   
                       B       ng/mL      NaN   3620595.0         NaN   
               F2A23D  A         NaN    ng/mL         NaN   6631863.0   
                       B         NaN    ng/mL         NaN   6150949.0   
               F2A8IP  B       ng/mL      NaN   2227108.0         NaN   
VOCs           HPMA    B         NaN  pmol/mL         NaN   4444958.0   
               HPMA2   A         NaN  pmol/mL         NaN  14437254.0   
                       B     pmol/mL      NaN  15010317.0         NaN   
               SPMA    A     pmol/mL      NaN  12959157.0         NaN   
                       B         NaN  pmol/mL         NaN  11961421.0   

                                   CV                   SEM              
Lab_ID                              M         N           M           N  
Analysis_panel analyte Pool                                              
OXID           F2A12I  A      61110.0       NaN     98823.0         NaN  
                       B      36206.0       NaN     50259.0         NaN  
               F2A23D  A          NaN   66319.0         NaN     20186.0  
                       B          NaN   61509.0         NaN     21566.0  
               F2A8IP  B      22271.0       NaN      2000.0         NaN  
VOCs           HPMA    B          NaN   44450.0         NaN  27313001.0  
               HPMA2   A          NaN  144373.0         NaN  16838646.0  
                       B     150103.0       NaN  21588423.0         NaN  
               SPMA    A     129592.0       NaN     41438.0         NaN  
                       B          NaN  119614.0         NaN     54991.0