Быстрый совет: если вы отправляете вопрос, пожалуйста, предоставьте начальный код о том, как создать кадр данных (а не публиковать снимок экрана), потому что это облегчает людям, помогающим вам.
Шаг 1: фильтрваш фрейм данных с использованием маски
Шаг 2: создайте новый фрейм данных с использованием маски
Шаг 3: используйте объект groupby
import pandas as pd
# sample dataframe
df = pd.DataFrame({
'Hour': [1, 1, 1, 4, 4, 4, 16, 16, 16],
'Price': [-3000, -262, 150, -3000, -262, 150, -3000, -262, 150],
'Volume': [8133, 28287, 19289, 20242, 19428, 28322, 18147, 17234, 12133],
})
print('Raw dataframe:')
print(df, '\n')
# first create a mask that filters the data you want
mask_hour_1to10 = df['Hour'].between(1, 10)
# second create a new dataframe with the mask
df_filtered = df.loc[mask_hour_1to10]
print('Filtered dataframe:')
print(df_filtered, '\n')
# third, use a groupby object on price, to calculate average of volume
df_groupby_mean = df_filtered.groupby('Price')['Volume'].mean()
print('Groupby Object:')
print(df_groupby_mean)