如何找到df (Python)中列的第2(或第3)最大值的索引?



我想找到每列的第二大值,但想收集可以找到该值的位置(简而言之:使用.nlarge(2)时,.idxmax的等量物是什么。值[1]?)

下面是我获得第二和第三个最大值的原因:

test_2ndmax = pd.DataFrame({'Col{}'.format(i):np.random.randint(0,100,5) for i in range(5)})
display(test_2ndmax)
#retrieving 2nd higest value for each column
display(test_2ndmax.apply(lambda col: col.nlargest(2).values[-1],axis=0))
#retrieving to get 3rd higest value
display(test_2ndmax.apply(lambda col: col.nlargest(3).values[-1],axis=0))

输出如下:

Col0    Col1    Col2    Col3    Col4
0   9       15      24      45      85
1   26      50      91      34      60
2   3       88      84      17      53
3   8       58      73      56      11
4   82      65      93      3       46
Col0    82
Col1    65
Col2    91
Col3    45
Col4    60
dtype: int32
Col0    26
Col1    58
Col2    84
Col3    34
Col4    53
dtype: int32

然而,我想得到这个,因为我将使用等价的idxmax:(例如col.nlarge (2).values[-1]),

Col0 4
Col1 4
Col2 1
Col3 0
Col4 1

谢谢!

使用.nlargest(2)+.idxmin()获取第二大值的索引(类似于第三大…):

x = test_2ndmax.apply(lambda col: col.nlargest(2).idxmin(), axis=0)
print(x)

打印:

Col0    3
Col1    3
Col2    4
Col3    4
Col4    1
dtype: int64

DataFrame使用:

Col0  Col1  Col2  Col3  Col4
0    64    10     6    49    94
1     4    22    86    79    82
2    84    92    25     1    43
3    87    41    18    51    29
4    96    40    73    70    74

相关内容

  • 没有找到相关文章

最新更新