大熊猫数据框中n个最大值的位置

时间:2019-11-19 10:27:43

标签: python pandas

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

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

预期结果是:

[[0,1],[2,2],[1,0]]

3 个答案:

答案 0 :(得分:1)

DataFrame.stackSeries.nlargest一起使用:

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

如果需要嵌套列表:

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

答案 1 :(得分:1)

您可以执行以下操作:

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

这将设置一列“ max”,每一列的最大值。之后,您可以像这样使用df.apply获取值:

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

结果:

[[0, 1], [1, 0], [2, 2]]

答案 2 :(得分:0)

您可以使用MongoDB方法:

idxmax

如果要同时使用两个坐标的数组:

In [2]: df.idxmax()
Out[2]: 
0 1
1 0
2 2