代码之家  ›  专栏  ›  技术社区  ›  Krzysztof Słowiński

如何提取熊猫数据帧列中的第n个最大值/最小值?

  •  14
  • Krzysztof Słowiński  · 技术社区  · 7 年前

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

    例子:

    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
    

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

    2 回复  |  直到 6 年前
        1
  •  23
  •   cs95 abhishek58g    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
    
    df.a.nlargest(3).iloc[-1]
    2.0
    

    df.a.nlargest(3).iloc[[-1]]
    
    1    2.0
    Name: a, dtype: float64
    

    至于 b -

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

    df.b.nsmallest(2).iloc[[-1]]
    
    2    2.0
    Name: b, dtype: float64
    

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

        2
  •  4
  •   cs95 abhishek58g    7 年前
    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