【发布时间】: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)
我看到其他帖子使用相同的代码,但我无法弄清楚这个错误的原因是什么。
有什么想法吗?谢谢!
【问题讨论】: