【问题标题】:Largest (n) numbers with Index and Column name in Pandas DataFramePandas DataFrame 中具有索引和列名的最大 (n) 数
【发布时间】:2016-10-05 15:43:32
【问题描述】:

我希望找出 DataFrame 中最大的 5 个数字,并为这 5 个值存储索引名称和列名称。

我正在尝试使用 nlargest() 和 idxmax 方法,但未能实现我想要的。我的代码如下:

import numpy as np
import pandas as pd
from pandas import Series, DataFrame
df = DataFrame({'a': [1, 10, 8, 11, -1],'b': [1.0, 2.0, 6, 3.0, 4.0],'c': [1.0, 2.0, 6, 3.0, 4.0]})

请您告诉我如何实现这一目标。谢谢

【问题讨论】:

    标签: python pandas numpy dataframe data-analysis


    【解决方案1】:

    使用stacknlargest

    max_vals = df.stack().nlargest(5)
    

    这将为您提供一个具有多索引的系列,其中第一级是原始 DataFrame 的索引,第二级是给定值的列名。这是max_vals 的样子:

    3  a    11.0
    1  a    10.0
    2  a     8.0
       b     6.0
       c     6.0
    

    要显式获取索引和列名,请在max_vals 的索引上使用get_level_values

    max_idx = max_vals.index.get_level_values(0)
    max_cols = max_vals.index.get_level_values(1)
    

    max_idx的结果:

    Int64Index([3, 1, 2, 2, 2], dtype='int64')
    

    max_cols的结果:

    Index(['a', 'a', 'a', 'b', 'c'], dtype='object')
    

    【讨论】:

    • 非常感谢@root。我今天学习了这些方法并且能够得到它。感谢您的努力。
    猜你喜欢
    • 2018-06-09
    • 2016-05-05
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    相关资源
    最近更新 更多