df['size'].loc[df.groupby('adult')['weight'].transform('idxmax')].values
df['size2'] = df['size'].loc[df.groupby('adult')['weight'].transform('idxmax')
    ].values
Pandas: назначить результат groupby для фрейма данных в новый столбец