Python使用holidays库判断德国假日 pandas新增列全为False求解
问题原因
你遇到的现象是holidays库的默认设计导致的:调用holidays.DE()不传入years参数时,库只会默认加载当前系统所在年份的节假日数据。你的数据集覆盖2018-2021年,只要当前系统年份不在这个区间内,就会出现所有日期判断都为False的结果。
解决方法
不需要手动枚举年份,直接从你的数据列里提取所有覆盖的年份,传给holidays的构造参数即可,同时统一日期类型避免datetime带时分秒的匹配误差,代码如下:
import holidays # 提取数据集覆盖的所有唯一年份 all_years = df['Date'].dt.year.unique() # 初始化对应全部年份的德国节假日对象 de_holidays = holidays.DE(years=all_years) # 转换为date类型后匹配,保证判断准确 df['Holiday'] = df['Date'].dt.date.isin(de_holidays)
补充说明
如果需要匹配德国对应州的特殊节假日,可以在初始化时增加prov参数指定州,示例:
# 示例:加载巴伐利亚州的节假日 de_holidays_by = holidays.DE(years=all_years, prov='BY')
内容的提问来源于stack exchange,提问作者sdave
相关产品推荐
相关产品推荐

