Я хочу создать новый столбец, содержащий соответствующее значение максимума в другом столбце по группам. Это лучше всего объяснить на примере:
data = {'group':['g1', 'g1', 'g1', 'g1', 'g1', 'g1', 'g2', 'g2', 'g2', 'g2', 'g2'],
'A':[3, 1, 8, 2, 6, -1, 0, 13, -4, 0, 1],
'B':[5, 2, 3, 7, 11, -1, 4,-1, 1, 0, 2]}
df = pd.DataFrame(data)
df
Следующее решение работает как ярлык, но у меня есть ощущение, что есть лучший способ сделать это:
df.loc[:, 'Amax'] = df.loc[df.groupby('group')['B'].idxmax(), 'A']
df.loc[:, 'Amax'] = df.groupby('group')['Amax'].transform('median')
group A B Amax
0 g1 3 5 6.0
1 g1 1 2 6.0
2 g1 8 3 6.0
3 g1 2 7 6.0
4 g1 6 11 6.0
5 g1 -1 -1 6.0
6 g2 0 4 0.0
7 g2 13 -1 0.0
8 g2 -4 1 0.0
9 g2 0 0 0.0
10 g2 1 2 0.0