I have a pandas dataframe defined as follows:
import pandas as pd
headers = [\'Group\', \'Element\', \'Case\', \'Score\', \'Evaluation\'
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