https://pastein.ru/t/6N

  скопируйте уникальную ссылку для отправки


df['rate'][df['rate'] == 'отл'] = '5'
df['rate'][df['rate'] == 'неуд'] = '2'
set(df['rate'])

#1
a = Series(data = np.arange(1, 13), index = ['2-', '2', '2+', '3-', '3', '3+', '4-', '4', '4+', '5-', '5', '5+'])
df['intrate'] = df['rate'].apply(lambda x: a[x])
df['intrate'].groupby(df['branch']).mean().sort_values(ascending=False).index[0]