Python:按指定列的最大值对多索引进行排序

Python:按指定列的最大值对多索引进行排序,python,sorting,pandas,multi-index,Python,Sorting,Pandas,Multi Index,我正在尝试按特定列的最大值对Python进行排序,在本例中为信息\u剩余\u PCT 如何在保持行的分组和顺序的同时对级别进行排序 我尝试过:df.sort(['INFORMATION\u盈余\u PCT'],ascending=False),但这会丢失行的分组。非常感谢您的帮助 当前多索引输入: INFORMATION_SURPLUS_DIFF INFORMATION_SURPLUS_PCT SYMBOL

我正在尝试按特定列的最大值对Python进行排序,在本例中为
信息\u剩余\u PCT

如何在保持行的分组和顺序的同时对级别进行排序

我尝试过:
df.sort(['INFORMATION\u盈余\u PCT'],ascending=False)
,但这会丢失行的分组。非常感谢您的帮助

当前多索引输入:

              INFORMATION_SURPLUS_DIFF  INFORMATION_SURPLUS_PCT  
   SYMBOL                                                         
   AAL    0                   0.000000                 0.000000   
          1                  -0.008466                 1.000000   
          2                  -0.011333                 0.000000   
   ADI    0                   0.000000                 0.000000   
          1                  -0.010781                 2.000000   
          2                  -0.010414                 0.000000  
所需输出:

              INFORMATION_SURPLUS_DIFF  INFORMATION_SURPLUS_PCT  
   SYMBOL
   ADI    0                   0.000000                 0.000000 
          1                  -0.010781                 2.000000 
          2                  -0.010414                 0.000000  
   AAL    0                   0.000000                 0.000000  
          1                  -0.008466                 1.000000 
          2                  -0.011333                 0.000000 
您可以按第一级查找并获取
索引
。最后,您可以按第一级-
level=0
DataFrame

print df
          INFORMATION_SURPLUS_DIFF  INFORMATION_SURPLUS_PCT
SYMBOL                                                     
AAL    0                  0.000000                      0.0
       1                 -0.008466                      1.0
       2                 -0.011333                      0.0
ADI    0                  0.000000                      0.0
       1                 -0.010781                      2.0
       2                 -0.010414                      0.0

print df.groupby(level=0)['INFORMATION_SURPLUS_PCT'].max().sort_values(ascending=False)
SYMBOL
ADI    2.0
AAL    1.0
Name: INFORMATION_SURPLUS_PCT, dtype: float64

idx = df.groupby(level=0)['INFORMATION_SURPLUS_PCT'].max().sort_values(ascending=False).index
print idx
Index([u'ADI', u'AAL'], dtype='object', name=u'SYMBOL')

print df.reindex(index=idx, level=0)
          INFORMATION_SURPLUS_DIFF  INFORMATION_SURPLUS_PCT
SYMBOL                                                     
ADI    0                  0.000000                      0.0
       1                 -0.010781                      2.0
       2                 -0.010414                      0.0
AAL    0                  0.000000                      0.0
       1                 -0.008466                      1.0
       2                 -0.011333                      0.0