You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python时序DataFrame中识别美国节假日并标记布尔值

检测DataFrame中的日期是否为美国节假日

我有一个包含多年数据的DataFrame,希望检测其中的日期是否为美国节假日,并为其标记True/False或1/0。

初始代码

import pandas as pd
df = pd.DataFrame(index=['2004-10-01', '2004-10-02', '2004-10-03', '2004-10-04', '2004-10-05',
       '2004-10-06', '2004-10-07', '2004-10-08', '2004-10-09', '2004-10-10',
       '2018-07-25', '2018-07-26', '2018-07-27', '2018-07-28', '2018-07-29',
       '2018-07-30', '2018-07-31', '2018-08-01', '2018-08-02', '2018-08-03'])

import holidays
# 获取美国节假日
hldys = holidays.country_holidays('US')
# 尝试将检测逻辑应用到DataFrame的每个索引日期
df['isHoliday?'] = df.index.map(lambda x: hldy.get(x))

当前输出

isHoliday?
2004-10-01  None
2004-10-02  None
2004-10-03  None
2004-10-04  None
2004-10-05  None
2004-10-06  None
2004-10-07  None
2004-10-08  None
2004-10-09  None
2004-10-10  None
2018-07-25  None
2018-07-26  None
2018-07-27  None
2018-07-28  None
2018-07-29  None
2018-07-30  None
2018-07-31  None
2018-08-01  None
2018-08-02  None

更新:已找到解决方案

us_hldys = holidays.country_holidays('US')
df['isHoliday?'] = df.index.to_series().apply(lambda x: x in us_hldys)

解决方案输出

isHoliday?
2004-10-01  False
2004-10-02  False
2004-10-03  False
2004-10-04  False
2004-10-05  False
2004-10-06  False
2004-10-07  False
2004-10-08  False
2004-10-09  False
2004-10-10  False
2018-07-25  False
2018-07-26  False
2018-07-27  False
2018-07-28  False
2018-07-29  False
2018-07-30  False
2018-07-31  False
2018-08-01  False
2018-08-02  False
2018-08-03  False

内容的提问来源于Stack Exchange,提问作者Mainland

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 01:17:50