df = pd.DataFrame([[1, 10, 1], [6, 1, 1], [1,1,9]])
我想找到数据框中3个最高值(10、9和6)的位置[行索引,列索引]
预期结果是:
[[0,1],[2,2],[1,0]]
答案 0 :(得分:1)
将DataFrame.stack
与Series.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