【问题标题】:Finding the maximum entry based on another column in a data frame根据数据框中的另一列查找最大条目
【发布时间】:2014-10-14 00:52:25
【问题描述】:

假设我有一个包含 3 列的数据框:A, B, C。我想按列A 分组,并在C 中找到具有最大条目的行(对于每个唯一A),以便我可以将row.A, row.B, row.C 存储到其他地方的字典中。

不使用iterrows 的最佳方法是什么?

【问题讨论】:

    标签: python numpy pandas dataframe series


    【解决方案1】:
    # generate sample data
    import pandas as pd
    df = pd.DataFrame(np.random.randint(0,10,(10,3)))
    df.columns = ['A','B','C']
    
    # sort by C, group by A, take last row of each group
    df.sort('C').groupby('A').nth(-1)
    

    【讨论】:

      【解决方案2】:

      这是另一种方法。如果df是DataFrame,你可以写df.groupby('A').apply(lambda d: d.ix[d['C'].argmax()])。 例如,

      In [96]: df
      Out[96]: 
          A  B  C
      0   1  0  3
      1   3  0  4
      2   0  4  5
      3   2  4  0
      4   3  1  1
      5   1  6  2
      6   3  6  0
      7   4  0  1
      8   2  3  4
      9   0  5  0
      10  7  6  5
      11  3  1  2
      
      In [97]: g = df.groupby('A').apply(lambda d: d['C'].argmax())
      
      In [98]: g
      Out[98]: 
      A
      0     2
      1     0
      2     8
      3     1
      4     7
      7    10
      dtype: int64
      
      In [99]: df.ix[g.values]
      Out[99]: 
          A  B  C
      2   0  4  5
      0   1  0  3
      8   2  3  4
      1   3  0  4
      7   4  0  1
      10  7  6  5
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-25
        • 1970-01-01
        • 2021-10-11
        • 1970-01-01
        • 2012-05-06
        • 2021-05-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多