print(pd.merge(df, df.groupby('adult').apply(lambda subf: subf['size'][subf
    ['weight'].idxmax()]).reset_index(name='size2'), on=['adult']))
Pandas: назначить результат groupby для фрейма данных в новый столбец