Я новичок в этой python праздничной библиотеке, поэтому заранее прошу прощения за любые тривиальные вопросы, которые я могу задавать.
Моя главная проблема заключается в том, что я не уверен, как изменить «наблюдаемое» Ценности в праздники. Мне нужен праздник, который нужно соблюдать в понедельник, только если он выпадает на воскресенье. Мне не нужно, чтобы в субботу отмечались праздничные дни.
Документация, похоже, имеет решение, только если я хочу полностью, а не частично удалить «наблюдаемые» праздники. Мой обходной путь для этого состоял в том, чтобы создать класс NewCountrysHolidays и заполнить его праздниками и наблюдаемыми статусами, которые я хотел. Я прикрепил свой код для нового класса ниже.
Моя новая проблема заключается в том, что я получаю код ошибки: 'datetime.date' object is not callable
, когда я делаю 1-1-2015 in us_electric_holidays
, но он работает с метками времени с моими данными. Когда я использую свои данные, я получаю новую ошибку name 'SUN' is not defined
. Похоже, не распознать будни бывших. СОЛНЦЕ, и месяцы отл. DE C. Я не уверен, почему.
Я прошу прощения, если это было многословно, но я ценю и благодарю вас за любую помощь в решении этой проблемы.
Предыстория проблемы: (Если интересно) Я являюсь Электротехника кандидат технических наук студент, который специализируется на электросети. Одна из моих задач - анализ данных энергетических компаний. Энергетические компании определяют праздник как:
Праздники - это Новый год, День президента, День памяти, День независимости, День труда, День ветеранов, День благодарения и Рождество. Если какой-либо выходной день выпадает на воскресенье, следующий понедельник будет считаться выходным. Однако в праздничные дни, приходящиеся на субботу, никаких изменений не будет.
Чтобы все данные были правильно помечены, мне нужно удалить День Мартина Лютера Кинга и День Колумба. Затем удалите наблюдаемую субботу из праздника пятницы.
Я реализовал все это в приведенном ниже коде, но он не запустится.
код для класса праздников (он длинный, но StackOverflow сделал не позволяйте мне прикреплять файлы):
import holidays
from datetime import date
from dateutil.relativedelta import relativedelta as rd
class UsElectricHolidays(holidays.HolidayBase):
def _populate(self, year):
# New Year's Day
if year > 1870:
name = "New Year's Day"
self[date(year, JAN, 1)] = name
if self.observed and date(year, JAN, 1).weekday() == SUN:
self[date(year, JAN, 1) + rd(days=+1)] = name + \
" (Observed)"
# Washington's Birthday
name = "Washington's Birthday"
if year > 1970:
self[date(year, FEB, 1) + rd(weekday=MO(+3))] = name
elif year >= 1879:
self[date(year, FEB, 22)] = name
# Memorial Day
if year > 1970:
self[date(year, MAY, 31) + rd(weekday=MO(-1))] = "Memorial Day"
elif year >= 1888:
self[date(year, MAY, 30)] = "Memorial Day"
# Independence Day
if year > 1870:
name = "Independence Day"
self[date(year, JUL, 4)] = name
if self.observed and date(year, JUL, 4).weekday() == SUN:
self[date(year, JUL, 4) + rd(days=+1)] = name + " (Observed)"
# Labor Day
if year >= 1894:
self[date(year, SEP, 1) + rd(weekday=MO)] = "Labor Day"
# Veterans Day
if year > 1953:
name = "Veterans Day"
else:
name = "Armistice Day"
if 1978 > year > 1970:
self[date(year, OCT, 1) + rd(weekday=MO(+4))] = name
elif year >= 1938:
self[date(year, NOV, 11)] = name
if self.observed \
and date(year, NOV, 11).weekday() == SUN:
self[date(year, NOV, 11) + rd(days=+1)] = name + \
" (Observed)"
# Thanksgiving
if year > 1870:
self[date(year, NOV, 1) + rd(weekday=TH(+4))] = "Thanksgiving"
# Christmas Day
if year > 1870:
name = "Christmas Day"
self[date(year, DEC, 25)] = "Christmas Day"
if self.observed \
and date(year, DEC, 25).weekday() == SUN:
self[date(year, DEC, 25) + rd(days=+1)] = name + \
" (Observed)"
us_electric_holidays = UsElectricHolidays()