我希望找出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]})
你能告诉我怎样才能实现这一目标。谢谢
答案 0 :(得分:3)
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')