Допустим, у меня есть фрейм данных (я просто воспользуюсь простым примером), который выглядит следующим образом:
import pandas as pd
df = {'Col1':[3,4,2,6,5,7,3,4,9,7,1,3],
'Col2':['B','B','B','B','A','A','A','A','C','C','C','C',],
'Col3':[1,1,2,2,1,1,2,2,1,1,2,2]}
df = pd.DataFrame(df)
, который дает фрейм данных так:
Col1 Col2 Col3
0 3 B 1
1 4 B 1
2 2 B 2
3 6 B 2
4 5 A 1
5 7 A 1
6 3 A 2
7 4 A 2
8 9 C 1
9 7 C 1
10 1 C 2
11 3 C 2
ЧтоЯ хочу сделать это в несколько шагов:
1) Для каждого уникального значения в Col2, и для каждого уникального значения в Col3, среднее Col1.Таким образом, желаемый результат будет:
Avg Col2 Col3
1 3.5 B 1
2 4 B 2
3 6 A 1
4 3.5 A 2
5 8 C 1
6 2 C 2
2) Теперь для каждого уникального значения в Col3 я хочу самое высокое среднее значение и соответствующее значение в Col2.Итак,
Best Avg Col2 Col3
1 8 C 1
2 4 B 2
Моя попытка использовала df.groupby(['Col3','Col2'], as_index = False).agg({'Col1':'mean'}).groupby(['Col3']).agg({'Col1':'max'})
Это дает мне максимальное среднее значение для каждого значения Col3, но не соответствующей метки Col2.Спасибо за любую помощь, вы можете оказать!