Pandas: grouping and aggregation with multiple functions

前端 未结 4 1779
南笙
南笙 2021-01-14 04:52

Situation

I have a pandas dataframe defined as follows:

import pandas as pd

headers = [\'Group\', \'Element\', \'Case\', \'Score\', \'Evaluation\'         


        
4条回答
  •  忘掉有多难
    2021-01-14 05:06

    You can use apply instead of agg to construct all the columns in one go.

    result = (
        df.groupby('Group').apply(lambda x: [np.max(x.Score),
                                  df.loc[x.Score.idxmax(),'Element'],
                                  df.loc[x.Score.idxmax(),'Case'],
                                  np.min(x.Evaluation)])
          .apply(pd.Series)
          .rename(columns={0:'Max_score_value',
                           1:'Max_score_element',
                           2:'Max_score_case',
                           3:'Min_evaluation'})
          .reset_index()
    )
    
    
    
    result
    Out[9]: 
      Group  Max_score_value  Max_score_element Max_score_case  Min_evaluation
    0     A             9.19                  1              y            0.41
    1     B             9.12                  2              x            0.10
    

提交回复
热议问题