Как узнать номер текущего рабочего дня с начала месяца по известной дате
В датафрейме pandas есть столбец в Datetime формате. Как красиво получить столбец WorkdayofMonth - номер рабочего дня текущего месяца:
Datatime WorkdayofMonth
2021-07-01 12:00:00 1
2021-07-01 15:00:00 1
2021-07-02 12:00:00 2
2021-07-02 15:00:00 2
2021-07-05 12:00:00 3
2021-07-05 15:00:00 3
Upd. Желательно с учетом праздников в Великобритании
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Ну вот я набросал вам функцию WorkdayofMonth, к датафрейму думаю сами примените через apply:
# pip install workalendar
import datetime
from workalendar.europe import UnitedKingdom
cal = UnitedKingdom()
def IsWorkingDay(cal, dt):
return dt.weekday() < 5 and not cal.is_holiday(dt)
def WorkdayofMonth(cal, dt):
return sum(IsWorkingDay(cal, datetime.date(dt.year, dt.month, day)) for day in range(1, dt.day+1))
print(WorkdayofMonth(cal, datetime.date(2021, 7, 1)))
print(WorkdayofMonth(cal, datetime.date(2021, 7, 2)))
print(WorkdayofMonth(cal, datetime.date(2021, 7, 5)))
print(WorkdayofMonth(cal, datetime.date(2021, 1, 4))) # проверка и выходных и праздника
Вывод:
1
2
3
1