【问题标题】:Sort Multi-index pandas dataframe based on specific indexes根据特定索引对多索引熊猫数据框进行排序
【发布时间】:2017-01-12 13:59:33
【问题描述】:

我有以下数据框:

 x                                        y

 a            b            c              a          b          c

 kk  ii  jj   kk  jj  ii   kk  jj  ii    ii  jj kk  jj kk ii   kk ii jj

 1  .1  .01  2   .5  .2  .4   .6  .01  .3   .5  .7  1.  1.  2  .3  .2 .01 .4  

 2  .5  .01  2    3  .1   4   .3  .1  .01  .02  2   1   5  .7 .3   2  4.5  2.

 3  .01  .1  .4   .1 .5  .2    3  .6   1    3  .2   3  .2   1  1  .5  .2   1

我想要的是:

 x                                        y

 a            b            c              a          b          c

 ii  kk  jj   ii  kk  jj   ii  kk  jj    ii  kk  jj  ii  kk  jj   ii  kk  jj

 1  .01  .1  2   .4  .5  .2   .3  .6  .01   .5   1   .7  .3  2  1.   0.01 .2  .4

 2  0.1  .5  2    4   3  .1   .01 .3  .1   .02   1   2   .3  7  5     4.5  2  2

 3  .1  .01 .4   .2  .1  .5    1  3  .6     3    3  .2    1  1  .2    .2  .5  1 

其实目的是根据df['1']['x']['a']对整个dataframe进行排序。

我得到了排序的新索引,但不知道如何根据new_idx重新索引df?

df_sort = df.loc['1']['x']['a'].sort_values(axis=0) 

new_idx = df_sort.index    -->    new_idx = (['ii','kk','jj'])

【问题讨论】:

    标签: python sorting pandas dataframe multi-index


    【解决方案1】:

    你可以使用reindex:

    df = df.reindex(columns=['ii','kk','jj'], level=2)
    print (df)
          x                                                y                      \
          a               b               c                a              b        
         ii    kk   jj   ii   kk   jj    ii   kk    jj    ii   kk   jj   ii   kk   
    1  0.01  0.10  2.0  0.4  0.5  0.2  0.30  0.6  0.01  0.50  1.0  0.7  0.3  2.0   
    2  0.01  0.50  2.0  4.0  3.0  0.1  0.01  0.3  0.10  0.02  1.0  2.0  0.3  0.7   
    3  0.10  0.01  0.4  0.2  0.1  0.5  1.00  3.0  0.60  3.00  3.0  0.2  1.0  1.0   
    
    
               c            
        jj    ii   kk   jj  
    1  1.0  0.01  0.2  0.4  
    2  5.0  4.50  2.0  2.0  
    3  0.2  0.20  0.5  1.0  
    

    【讨论】:

      猜你喜欢
      • 2013-12-15
      • 2021-07-03
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 2020-01-04
      • 2016-06-13
      • 2021-11-02
      相关资源
      最近更新 更多