Поскольку ваши группы не расположены равномерно, определите ребра корзины и используйте pd.cut
для группировки по этим корзинам.
import pandas as pd
bins = [12, 15, 17, 19, 21, 23, 25, 26]
df.groupby(pd.cut(df.Hour, bins, right=False)).Production.mean()
Выход:
Hour
[12, 15) 42.333333
[15, 17) 66.666667
[17, 19) 62.666667
[19, 21) NaN
[21, 23) 63.000000
[23, 25) NaN
[25, 26) 97.000000
Name: Production, dtype: float64