Python:按指定列的最大值对多索引进行排序
我正在尝试按特定列的最大值对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
信息\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