gpt4 book ai didi

Python:按特定列的最大值对 Pandas MultiIndex 进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 05:34:32 25 4
gpt4 key购买 nike

我正在尝试按特定列的最大值对 Python Pandas MultiIndex 进行排序,在本例中为 INFORMATION_SURPLUS_PCT

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

我试过:df.sort(['INFORMATION_SURPLUS_PCT'], ascending=False),但这会丢失行的分组。非常感谢任何帮助!

当前 MultiIndex 输入:

              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

最佳答案

您可以 groupby通过第一级,找到max , sort_values并获取 index。最后你可以reindex DataFrame 第一级 - level=0:

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

关于Python:按特定列的最大值对 Pandas MultiIndex 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36040452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com