Я не уверен, как интерпретировать ваш вопрос, поэтому вот два ответа (на разные вопросы)
, чтобы получить среднее значение всех значений, которые встречаются в понедельник в 1:00.(выходной будет один скаляр) :
# Make sure the index is a pd.datetime object
df.index = pd.to_datetime(df.index)
# find all rows which occur on a monday and at 01:00:00, and take the mean
monday_means = (df.loc[(df.index.weekday_name == 'Monday') &
(df.index.time == pd.to_datetime('01:00:00').time())]
.mean()
.to_frame('Monday 1 Am'))
, чтобы получить среднее значение за предыдущую неделю, с недели, начинающейся в понедельник в 1:00 (выходные данные будут сериями) :
# Make sure the index is a pd.datetime object
df.index = pd.to_datetime(df.index)
# Create a column for week number, which counts consecutively every monday at 1:00:00
df['week_number'] = ((df.index.weekday_name == 'Monday') &
(df.index.time == pd.to_datetime('01:00:00').time())
.cumsum())
# Groupby week number and get the mean
df.groupby('week_number').mean()
Или, проще (но менее гибкий, он начнет неделю в понедельник в полночь, а не в 1 час ночи):
df.groupby(pd.Grouper(freq='W')).mean()