如何在熊猫的DataFrame的列中提取第n个最大值/最小值?

Krz*_*ski 3 python max min dataframe pandas

我想从DataFrame熊猫的数字列中获取第n个最小值或第n个最大值。

例:

df = pd.DataFrame({'a': [3.0, 2.0, 4.0, 1.0],'b': [1.0, 4.0 , 2.0, 3.0]})

     a    b
0  3.0  1.0
1  2.0  4.0
2  4.0  2.0
3  1.0  3.0
Run Code Online (Sandbox Code Playgroud)

列中的第三个最大值a是2 ,列中的第二个最小值b也是2。

cs9*_*s95 7

您可以使用nlargest/ nsmallest-

df    
     a    b
0  3.0  1.0
1  2.0  4.0
2  4.0  2.0
3  1.0  3.0
Run Code Online (Sandbox Code Playgroud)
df.a.nlargest(3).iloc[-1]
2.0
Run Code Online (Sandbox Code Playgroud)

要么,

df.a.nlargest(3).iloc[[-1]]

1    2.0
Name: a, dtype: float64
Run Code Online (Sandbox Code Playgroud)

而且b-

df.b.nsmallest(2).iloc[-1]
2.0
Run Code Online (Sandbox Code Playgroud)

要么,

df.b.nsmallest(2).iloc[[-1]]

2    2.0
Name: b, dtype: float64
Run Code Online (Sandbox Code Playgroud)

在这里快速观察-这种操作无法矢量化。您实际上是在这里执行两个完全不同的操作。


小智 5

df =  
     a    b
0  3.0  1.0
1  2.0  4.0
2  4.0  2.0
3  1.0  3.0

df.nlargest(3,'a')
   =2.0

df.nsmallest(2,'b')=2.0
Run Code Online (Sandbox Code Playgroud)