【问题标题】:Multiple aggregation in group by in Pandas DataframePandas Dataframe 中分组的多重聚合
【发布时间】:2016-06-24 10:33:19
【问题描述】:
SQL : Select Max(A) , Min (B) , C from Table group by C 

我想在 pandas 中对数据框执行相同的操作。我离得越近:

DF2= DF1.groupby(by=['C']).max() 

我在哪里获得两列的最大值,我如何在分组时执行多个操作。

【问题讨论】:

    标签: python pandas group-by dataframe aggregate-functions


    【解决方案1】:

    你可以使用函数agg:

    DF2 = DF1.groupby('C').agg({'A': max, 'B': min})
    

    示例:

    print DF1
       A   B  C  D
    0  1   5  a  a
    1  7   9  a  b
    2  2  10  c  d
    3  3   2  c  c
    
    DF2 = DF1.groupby('C').agg({'A': max, 'B': min})
    
    print DF2
       A  B
    C      
    a  7  5
    c  3  2
    

    GroupBy-fu: improvements in grouping and aggregating data in pandas - 很好的解释。

    【讨论】:

      【解决方案2】:

      试试agg()函数:

      import numpy as np
      import pandas as pd
      
      
      df = pd.DataFrame(np.random.randint(0,5,size=(20, 3)), columns=list('ABC'))
      print(df)
      
      print(df.groupby('C').agg({'A': max, 'B':min}))
      

      输出:

          A  B  C
      0   2  3  0
      1   2  2  1
      2   4  0  1
      3   0  1  4
      4   3  3  2
      5   0  4  3
      6   2  4  2
      7   3  4  0
      8   4  2  2
      9   3  2  1
      10  2  3  1
      11  4  1  0
      12  4  3  2
      13  0  0  1
      14  3  1  1
      15  4  1  1
      16  0  0  0
      17  4  0  1
      18  3  4  0
      19  0  2  4
         A  B
      C
      0  4  0
      1  4  0
      2  4  2
      3  0  4
      4  0  1
      

      或者你可能想检查pandas.read_sql_query()函数...

      【讨论】:

        【解决方案3】:

        你可以使用agg函数

        import pandas as pd
        import numpy as np
        
        df.groupby('something').agg({'column1': np.max, 'columns2': np.min})
        

        【讨论】:

          猜你喜欢
          • 2019-03-24
          • 2019-08-29
          • 2021-04-14
          • 2018-04-16
          • 2021-07-24
          • 1970-01-01
          • 2017-04-20
          • 1970-01-01
          相关资源
          最近更新 更多