Проверьте, является ли дата выходным днем ​​[TypeError: требуется целое число (получил тип Holiday)] - PullRequest
2 голосов
/ 27 апреля 2020

Я читаю данные из CSV с pandas. После прочтения данных я преобразую столбец даты из строки в формат даты и удаляю время. Я хочу создать новый столбец, содержащий значения 0 и 1, который показывает, является ли день выходным (1) или нет (0). Для этого я преобразовал строки времени в datetime и создал календарь праздников:

import pandas as pd
from pandas.tseries.offsets import Easter, Day
from pandas.tseries.holiday import EasterMonday, GoodFriday, Holiday, AbstractHolidayCalendar

# convert strings to date
data['date'] = pd.to_datetime(data['date'], dayfirst=True, errors='coerce')
# remove time
data['date'] = data['date'].dt.date

# german holidays
class GermanHolidays(AbstractHolidayCalendar):
    rules = [Holiday('New Years Day', month=1, day=1),
             Holiday('Good Fridy', GoodFriday),
             Holiday('Easter Monday', EasterMonday),
             Holiday('Ascension of Christ', month=1, day=1, offset=[Easter(), Day(39)]),
             Holiday('Internation Womens Day', month=3, day=8),
             Holiday('First of May', month=5, day=1),
             Holiday('Whit Monday', month=1, day=1, offset=[Easter(), Day(50)]),
             Holiday('Liberation Day', month=5, day=8),
             Holiday('German Unity Day', month=10,day=3),
             Holiday('First Christmas Day', month=12, day=25),
             Holiday('Second Christmas Day', month=12, day=26)]

cal = GermanHolidays()
holidays = cal.holidays(start = data['date'].min(), end = data['date'].max())

Проблема возникает в последней строке (праздничные дни = ...), и я получаю следующую ошибку:

TypeError: an integer is required (got type Holiday)

Я видел другие посты с тем же кодом, которые работают, и я не могу понять, в чем причина этой ошибки.

Есть идеи? Спасибо!

1 Ответ

0 голосов
/ 27 апреля 2020

Вам необходимо исправить эти правила:

rules = [Holiday('New Years Day', month=1, day=1),
         GoodFriday,
         EasterMonday,
         Holiday('Ascension of Christ', month=1, day=1, offset=[Easter(), Day(39)]),
         Holiday('Internation Womens Day', month=3, day=8),
         Holiday('First of May', month=5, day=1),
         Holiday('Whit Monday', month=1, day=1, offset=[Easter(), Day(50)]),
         Holiday('Liberation Day', month=5, day=8),
         Holiday('German Unity Day', month=10,day=3),
         Holiday('First Christmas Day', month=12, day=25),
         Holiday('Second Christmas Day', month=12, day=26)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...