【问题标题】:Sorting multi index pandas by subgroup then by group with highest value按子组对多索引熊猫进行排序,然后按具有最高值的组排序
【发布时间】:2019-03-01 16:15:50
【问题描述】:

我想详细介绍重置索引、排序值和为 MultiIndex DataFrames 设置新索引。

我要拿这个

df = df.reset_index()
       .sort_values(['col1','col3'], ascending=[True, False])
       .set_index(['col1','col2'])

           col3 
col1 col2       
a    t     2.92
     1     1.67
     2     0.75
     3     0.50 
b    t     4.75
     2     2.25
     3     2.00
     1     0.50 
c    t     7.90
     3     2.75
     1     2.65
     2     2.50

并按排序组的最高值排序

           col3
col1 col2      
c    t     7.90
     3     2.75
     1     2.65
     2     2.50
b    t     4.75
     2     2.25
     3     2.00
     1     0.50
a    t     2.92
     1     1.67
     2     0.75
     3     0.50

【问题讨论】:

    标签: python python-3.x pandas multi-index


    【解决方案1】:

    您可以通过临时分配一个排序键来做到这一点,排序键由groupby level=0 索引或'col1'然后transform 和求和创建:

    df.assign(sortkey=df[['col3']].groupby(level=0).transform('sum'))\
      .sort_values(['sortkey','col3'], ascending=[False,False])\
      .drop('sortkey', axis=1)
    

    输出:

               col3
    col1 col2      
    c    t     7.90
         3     2.75
         1     2.65
         2     2.50
    b    t     4.75
         2     2.25
         3     2.00
         1     0.50
    a    t     2.92
         1     1.67
         2     0.75
         3     0.50
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-09
      • 2017-10-12
      • 2019-06-29
      • 2016-02-15
      • 2018-05-12
      • 1970-01-01
      • 2015-08-27
      • 2016-10-22
      相关资源
      最近更新 更多