Python 数据帧中n个最高值的位置

Python 数据帧中n个最高值的位置,python,pandas,Python,Pandas,我想找到数据帧中3个最高值(10、9和6)的位置[行索引、列索引] 预期结果是: df = pd.DataFrame([[1, 10, 1], [6, 1, 1], [1,1,9]]) 用于: 如果需要嵌套列表: a = df.stack().nlargest(3).index.tolist() print (a) [(0, 1), (2, 2), (1, 0)] 您可以使用idxmax方法: a = list(map(list, df.stack().nlargest(3).index))

我想找到数据帧中3个最高值(10、9和6)的位置[行索引、列索引]

预期结果是:

df = pd.DataFrame([[1, 10, 1], [6, 1, 1], [1,1,9]])
用于:

如果需要嵌套列表:

a = df.stack().nlargest(3).index.tolist()
print (a)
[(0, 1), (2, 2), (1, 0)]

您可以使用
idxmax
方法:

a = list(map(list, df.stack().nlargest(3).index))
print (a)
[[0, 1], [2, 2], [1, 0]]
如果希望阵列同时具有两个坐标:

[3]中的
:df.idxmax().reset_index().value
出[3]:
数组([[0,1],[1,0],[2,2]]

您可以执行以下操作:

In [2]: df.idxmax()
Out[2]: 
0 1
1 0
2 2
这将设置一个列“max”,该列按列显示最大值。之后,您可以使用
df获取值。如下所示应用

df['max'] = df.idxmax(axis=1)
结果:

my_list = df.apply(lambda value: [value.name, value['max']], axis=1).to_list()
my_list = df.apply(lambda value: [value.name, value['max']], axis=1).to_list()
[[0, 1], [1, 0], [2, 2]]