我想找到每列的第二大值,但想收集可以找到该值的位置(简而言之:使用.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