【问题标题】:index and column for the max value in pandas dataframe熊猫数据框中最大值的索引和列
【发布时间】: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 pandas


    【解决方案1】:

    您可以在排序前使用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]应该可以。]

    【讨论】:

    • 在 pandas 0.12.0 中,df.unstack()[df.unstack().argsort()].index[-3:] 不起作用。错误消息:IndexError:不支持的迭代器索引
    猜你喜欢
    • 2016-07-19
    • 2018-08-04
    • 2017-07-25
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2022-07-25
    • 1970-01-01
    相关资源
    最近更新 更多