Пакет pandas имеет несколько хороших функций времени и даты.
Например,
import pandas as pd
s = pd.date_range('2020-01-01', '2020-12-31', freq='D').to_series()
print(s.dt.dayofweek)
дает вам дни недели в виде целых чисел.
2020-01-01 2
2020-01-02 3
2020-01-03 4
2020-01-04 5
2020-01-05 6
2020-01-06 0
2020-01-07 1
2020-01-08 2
2020-01-09 3
2020-01-10 4
( Понедельник = 0)
Тогда вы можете сделать
mondays = s.dt.dayofweek.eq(0)
Если вы хотите найти первый понедельник года, используйте.
print(mondays.idxmax())
Timestamp('2020-01-06 00:00:00', freq='D')
Или 5-й понедельник:
n = 4
print(s[mondays].iloc[n])
Timestamp('2020-02-03 00:00:00')
Если ваш фрейм данных о продажах равен df
, то для сравнения продаж за первые 5 понедельников двух разных лет вы можете сделать что-то вроде этого:
mondays = df['Date'].dt.dayofweek.eq(0)
mondays_in_y1 = (df['Year'] == 2019) & mondays
mondays_in_y2 = (df['Year'] == 2020) & mondays
pd.DataFrame({
2019: df.loc[mondays_in_y1, 'Sales'].values[:5],
2020: df.loc[mondays_in_y2, 'Sales'].values[:5]
})