Вывести номера недель (год) в каждом периоде (месяц)

Есть цикл который выводит номера недель каждого месяца нужное количество раз. И вот если к примеру, мы выберем начало недели - понедельник freq='W-MON', а месяц начинается не в понедельник. то цикл выводит номера недель с ПЕРВОГО ПОНЕДЕЛЬНИКА месяца, а нужно с номера недели куда попадает 01 число. К примеру декабрь 2021г. начинается в среду - 48 неделя, НО цикл первой печатает 49 неделю, с 06.12.2021. - Это логично. Но мне нужно что бы он показывал номер недели относящийся к промежуточным неделям. т.е что бы в декабре 2021 вывод начался с 48 неделе.

    # количество повторений
    n_repeat = 1
    # полученный период
    month_year = '11.2021'
    month_year = '01.' + str(month_year)  
    month_year = datetime.strptime(month_year, '%d.%m.%Y')  
    
    # Получаем первый и последний день месяца отчета
    first_day = pd.to_datetime(month_year).replace(day=1)
    last_day = (pd.to_datetime(first_day) + pd.offsets.MonthEnd()).date()
    
    for dt in pd.date_range(start=first_day, end = last_day, freq='W-MON').repeat(n_repeat).sort_values():
        datss = dt.date()
        print(datss.strftime('%W'))
        print(datss)#.strftime('%W')

Ответы (1 шт):

Автор решения: MaxU

Если я правильно понял вопрос:

In [62]: n_repeat = 2

In [63]: for d in pd.date_range(first_day, first_day + pd.offsets.MonthEnd(), freq="7D").repeat(n_repeat):
    ...:     print(f"date: {d:%Y-%m-%d}, week: {d.isocalendar()[1]}")
    ...:
date: 2021-11-01, week: 44
date: 2021-11-01, week: 44
date: 2021-11-08, week: 45
date: 2021-11-08, week: 45
date: 2021-11-15, week: 46
date: 2021-11-15, week: 46
date: 2021-11-22, week: 47
date: 2021-11-22, week: 47
date: 2021-11-29, week: 48
date: 2021-11-29, week: 48

Декабрь 2021:

In [64]: first_day = pd.to_datetime("2021-12-01")

In [65]: for d in pd.date_range(first_day, first_day + pd.offsets.MonthEnd(), freq="7D").repeat(n_repeat):
    ...:     print(f"date: {d:%Y-%m-%d}, week: {d.isocalendar()[1]}")
    ...:
date: 2021-12-01, week: 48
date: 2021-12-01, week: 48
date: 2021-12-08, week: 49
date: 2021-12-08, week: 49
date: 2021-12-15, week: 50
date: 2021-12-15, week: 50
date: 2021-12-22, week: 51
date: 2021-12-22, week: 51
date: 2021-12-29, week: 52
date: 2021-12-29, week: 52
→ Ссылка