Pandas DataFrame中具有索引和列名称的最大(n)数字

时间:2016-10-05 15:43:32

标签: python pandas numpy dataframe data-analysis

我希望找出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]})

你能告诉我怎样才能实现这一目标。谢谢

1 个答案:

答案 0 :(得分:3)

使用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')