Dataframe:
STUD_ID CLASS GRADE CATEGORY
1 'Sci' max 'Alpha'
2 'Sci' 7 'Omega'
3 'Sci' 9 'Alpha'
4 'Sci' 3 'Alpha'
5 'Sci' 9 'Alpha'
7 'eng' max 'Gamma'
8 'eng' 5 'Gamma'
9 'eng' 3 'Epsilon'
10 'Art' 3 'Lambda'
11 'Art' 8 'Lambda'
12 'Art' max undefined
13 'Art' 1 undefined
14 'Art' 5 undefined
I want to create a new column CATEGORY_1 that broadcasts the CATEGORY value (where the GRADE is max) to their respective CLASS group. See result df below.
STUD_ID CLASS GRADE CATEGORY CATEGORY_1
1 'Sci' max 'Alpha' . 'Alpha'
2 'Sci' 7 'Omega' . 'Alpha'
3 'Sci' 9 'Alpha' . 'Alpha'
4 'Sci' 3 'Alpha' . 'Alpha'
5 'Sci' 9 'Alpha' . 'Alpha'
7 'eng' max 'Gamma' . 'Gamma'
8 'eng' 5 'Gamma' . 'Gamma'
9 'eng' 3 'Epsilon' 'Gamma'
10 'Art' 3 'Lambda' . undefined
11 'Art' 8 'Lambda' . undefined
12 'Art' max undefined . undefined
13 'Art' 1 undefined . undefined
14 'Art' 5 undefined . undefined
I've tried using groupby + transform but I cannot figure out how to broadcast only the CATEGORY value where GRADE is max.