Предполагая, что ваш DataFrame ( df ):
- имеет исходную дату в столбце Dat ,
- текущую дату пятницыдолжен быть сохранен в Dat2 столбец,
выполнить:
df['Dat2'] = df.Dat + pd.offsets.Week(n=0, weekday=6) - pd.DateOffset(2)
Подробности:
+ pd.offsets.Week(n=0, weekday=6)
- сдвиг вближайшее воскресенье ( день недели = 6 ), но если текущий день недели уже воскресенье, сдвиг не происходит. - pd.DateOffset(2)
- возврат на 2 дня назад.
Тест: Для пары начальных дней сентября 2019 года результат будет:
Dat Dat2
0 2019-09-01 2019-08-30
1 2019-09-02 2019-09-06
2 2019-09-03 2019-09-06
3 2019-09-04 2019-09-06
4 2019-09-05 2019-09-06
5 2019-09-06 2019-09-06
6 2019-09-07 2019-09-06
7 2019-09-08 2019-09-06
8 2019-09-09 2019-09-13
9 2019-09-10 2019-09-13
10 2019-09-11 2019-09-13
11 2019-09-12 2019-09-13
12 2019-09-13 2019-09-13
13 2019-09-14 2019-09-13
14 2019-09-15 2019-09-13
15 2019-09-16 2019-09-20
Итак:
- 2019-09-01 (Воскресенье) перенесено (назад) на 2019-08-30 ,
- для следующих выходных (2-8.09) текущая пятница 2019-09-06 ,
и т. Д.