Предполагая, что у вас есть фрейм данных, который выглядит примерно так (фрейм данных изменен из примера изображения, чтобы содержать два местоположения и диапазон дат за несколько недель):
location day number_of_orders
0 Bryant Park 2018-01-01 394
1 Bryant Park 2018-01-02 807
2 Bryant Park 2018-01-03 744
3 Bryant Park 2018-01-04 791
4 Bryant Park 2018-01-05 677
5 Bryant Park 2018-01-06 294
6 Bryant Park 2018-01-07 503
7 Bryant Park 2018-01-08 434
8 Bryant Park 2018-01-09 591
9 Bryant Park 2018-01-10 877
10 Rockefeller Center 2018-01-01 135
11 Rockefeller Center 2018-01-02 237
Вы можете сначала добавить столбец day_of_week
:
df['day_of_week'] = pd.to_datetime(df['day']).dt.day_name()
Итак, теперь фрейм данных выглядит так:
location day number_of_orders day_of_week
0 Bryant Park 2018-01-01 394 Monday
1 Bryant Park 2018-01-02 807 Tuesday
2 Bryant Park 2018-01-03 744 Wednesday
3 Bryant Park 2018-01-04 791 Thursday
4 Bryant Park 2018-01-05 677 Friday
5 Bryant Park 2018-01-06 294 Saturday
6 Bryant Park 2018-01-07 503 Sunday
7 Bryant Park 2018-01-08 434 Monday
8 Bryant Park 2018-01-09 591 Tuesday
9 Bryant Park 2018-01-10 877 Wednesday
10 Rockefeller Center 2018-01-01 135 Monday
11 Rockefeller Center 2018-01-02 237 Tuesday
Затем вы можете использовать этот новый столбец для группировки для достижения желаемого результата:
res_df = df.groupby(['location', 'day_of_week']).mean().rename(columns={"number_of_orders": "avg_number_of_orders"})
Фрейм выходных данных:
location day_of_week avg_number_of_orders
Bryant Park Friday 677.0
Monday 414.0
Saturday 294.0
Sunday 503.0
Thursday 791.0
Tuesday 699.0
Wednesday 810.5
Rockefeller Center Monday 135.0
Tuesday 237.0
Обратите внимание, что вам может потребоваться внести несколько изменений, чтобы он работал с вашими фактическими данными, поскольку вы фактически не указываете, все ли местоположения хранятся в одном фрейме данных, и т. д. c.