【问题标题】:Check if date is holiday [TypeError: an integer is required (got type Holiday)]检查日期是否为假期 [TypeError: an integer is required (got type Holiday)]
【发布时间】:2020-04-27 11:17:03
【问题描述】:

我使用 pandas 从 csv 读取数据。读取数据后,我将日期列从字符串转换为日期格式并删除时间。我想创建一个包含值 0 和 1 的新列,显示一天是假期 (1) 还是不是 (0)。为此,我将时间字符串转换为日期时间并创建了一个假期日历:

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())

问题出现在最后一行(holidays = ...),我收到以下错误:

TypeError: an integer is required (got type Holiday)

我看到其他帖子使用相同的代码,但我无法弄清楚这个错误的原因是什么。

有什么想法吗?谢谢!

【问题讨论】:

    标签: python pandas time


    【解决方案1】:

    你需要修正这些规则:

    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)]
    

    【讨论】:

      猜你喜欢
      • 2019-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-21
      • 2016-11-17
      • 2022-01-08
      • 2018-06-24
      相关资源
      最近更新 更多