df.groupby('col1')[['col2']].mean()
Способ 1
df.groupby(['col1', 'col2'])['col3'].aggregate('mean').unstack()
или
df.groupby(['col_left', 'col_high'])['col_value'].aggregate('mean').unstack()
Способ 2
df.pivot_table('col3', index='col1', columns='col2')
df.pivot_table('col_value', index='col_left', columns='col_high')
Разделение на категории, диапазоны, градации
category = pd.cut(df['category'], [0, 10, 20])
чтобы добавить в столбец
df['col_category'] = pd.cut(df['col1'], [0, 10, 20])