【发布时间】:2013-02-03 04:13:59
【问题描述】:
我有一个五列五行的 python 数据框 df。我想获取最大三个值的行列名
例子:
df =
A B C D E F
1 00 01 02 03 04 05
2 06 07 08 09 10 11
3 12 13 14 15 16 17
4 18 19 20 21 22 23
5 24 25 26 27 28 29
输出显示类似 [5,F],[5,E],[5,D]
【问题讨论】:
我有一个五列五行的 python 数据框 df。我想获取最大三个值的行列名
例子:
df =
A B C D E F
1 00 01 02 03 04 05
2 06 07 08 09 10 11
3 12 13 14 15 16 17
4 18 19 20 21 22 23
5 24 25 26 27 28 29
输出显示类似 [5,F],[5,E],[5,D]
【问题讨论】:
您可以在排序前使用unstack:
>>> df
A B C D E F
1 0 1 2 3 4 5
2 6 7 8 9 10 11
3 12 13 14 15 16 17
4 18 19 20 21 22 23
5 24 25 26 27 28 29
>>> df.unstack()
A 1 0
2 6
3 12
4 18
5 24
B 1 1
2 7
3 13
4 19
5 25
[...]
F 1 5
2 11
3 17
4 23
5 29
等等
>>> df2 = df.unstack().copy()
>>> df2.sort()
>>> df2[-3:]
D 5 27
E 5 28
F 5 29
>>> df2[-3:].index
MultiIndex
[(D, 5.0), (E, 5.0), (F, 5.0)]
甚至
>>> df.unstack()[df.unstack().argsort()].index[-3:]
MultiIndex
[(D, 5.0), (E, 5.0), (F, 5.0)]
[我懒得颠倒顺序:在最后坚持[::-1]应该可以。]
【讨论】: