python - 检查日期是否为假期 [TypeError: an integer is required (got type Holiday)]
问题描述
我用熊猫从 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())
问题发生在最后一行(假期= ...),我收到以下错误:
TypeError: an integer is required (got type Holiday)
我已经看到其他帖子具有相同的代码,但我无法弄清楚,这个错误的原因是什么。
有任何想法吗?谢谢!
解决方案
您需要修复这些规则:
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)]
推荐阅读
- angular9 - 我们如何在单击 fullcalendar-angular CustomButton 时添加像 html 这样的下拉列表
- typescript - 类型“keyof T”不满足约束
- python - matplotlib 补丁在实时热图像上消失
- python-3.x - 如何在 Pivotal 云工厂 (PCF) 上访问 Cx_Oracle
- node.js - 使用带有节点js的knex将json文件数据插入mysql
- reactjs - 发布 https://api.jdoodle.com/v1/execute net::ERR_ABORTED 415
- azure - Azure Active Directory (AAD) 用户名的最大长度是多少?
- vlookup - 如何创建一个在多个报告之间提取和过滤数据的宏
- c# - 是否可以通过 Microsoft Graph 创建 Azure RBAC 角色
- git - 如何在 Shopware 6 开发系统上管理媒体?提交 git 还是不提交?