Время прочтения: 3 мин.
В начале написания кода импортируем библиотеку pandas:
Далее импортируем из нее метод определения последнего рабочего дня месяца:
Также нам понадобится модуль datetime:
Для того, чтобы найти последний рабочий день месяца, сначала вам необходимо указать в каком месяце мы его ищем. Для этого вводим переменную month.
Если это текущий месяц, то можно воспользоваться определением текущей даты:
Нужно понимать, что дата будет меняться каждый день.
Если это какой-то другой месяц, то их можно ввести вручную через input, либо подставляя переменные (при определении через цикл нескольких месяцев):
В данном случае задается какая-либо дата нужного месяца, например, отчетная.
где yyyy – соответственно год (2020), mm – месяц (2), dd – день (23) # C праздником!
Обратите внимание, что если у вас, как в данном случае, 2-й месяц, то подставляем 2, а не 02! Аналогично с днями!
Теперь можно найти последний рабочий день (lastBusinessDayMonth) месяца через метод BMonthEnd:
Команда rollforward будет искать последний рабочий день месяца «вперед» от даты month, поэтому, если month попадет на последний календарный день месяца, она найдет последний рабочий день уже в следующем месяце. Чтобы этого избежать и если отчет строится обычно в конце месяца, можно от переменной dd отнимать, например, 7 дней:
Также, необходимо учесть, что метод BMonthEnd определит последний рабочий день месяца для US calendar, т.е. календарь США. В большинстве случаев даты, попавшие на сб и вск будут отброшены корректно, исключением могут быть переносы праздничных дней в нашем производственном календаре.
В некоторых случаях может быть необходимо найти количество рабочих дней между определенными датами. Для этого можно воспользоваться библиотеками USFederalHolidayCalendar и CustomBusinessDay:
Далее переменной присвоим рабочие дни:
Для построения списка рабочих дней между двумя датами хх и yy выполняем следующую операцию:
Для определения количества рабочих дней между этими датами делаем следующее:
Здесь также необходимо учитывать, что USFederalHolidayCalendar имеет собственные праздничные дни, поэтому, для нашего производственного календаря необходимо внести коррективу праздников США и России.