代码之家  ›  专栏  ›  技术社区  ›  Brian Smith

按列的值分组并返回max

  •  0
  • Brian Smith  · 技术社区  · 2 年前

    我有一个有很多列的熊猫数据框架。现在我想按列的值分组,然后返回 max 并且还返回与该行对应的其余列的值 发生。下面是一个例子

    import pandas as pd
    dat = pd.DataFrame({'A' : ['Y', 'Y', 'Z'] , 'X1' : [10, 20, 30], 'X2' : [11, 10, 20], 'X3' : [20, 15, 60]})
    dat.groupby('A').agg({'X1' : 'max'})
       X1
    A    
    Y  20
    Z  30
    

    如您所见,它没有返回其他列,即。 X2, X3 等等,我想得到那些列的值,其中 发生,即。 {10, 15} and {20, 60} .在列中 X1

    1 回复  |  直到 2 年前
        1
  •  0
  •   BeRT2me    2 年前

    idxmax 返回索引,其中 max 所以我们可以利用这一点,把整行 X1

    df.loc[df.groupby('A')['X1'].idxmax()]
    

    输出:

       A  X1  X2  X3
    1  Y  20  10  15
    2  Z  30  20  60