我在西班牙创建了一个假期类
class SpainBusinessCalendar(AbstractHolidayCalendar):
rules = [
#Spain - If one holiday is on a Sunday, each Autonomous Community can change it to a Monday.
Holiday('Año Nuevo', month=1, day=1, observance=sunday_to_monday),
Holiday('Epifanía del Señor', month=1, day=6, observance=sunday_to_monday),
Holiday('Viernes Santo', month=1, day=1, offset=[Easter(), Day(-2)]),
Holiday('Día del Trabajador', month=5, day=1, observance=sunday_to_monday),
Holiday('Asunción de la Virgen', month=8, day=15, observance=sunday_to_monday),
Holiday('Día de la Hispanidad', month=10, day=12, observance=sunday_to_monday),
Holiday('Todos los Santos', month=11, day=1, observance=sunday_to_monday),
Holiday('Día Constitución', month=12, day=6, observance=sunday_to_monday),
Holiday('Inmaculada Concepción', month=12, day=8, observance=sunday_to_monday),
Holiday('Navidad', month=12, day=25, observance=sunday_to_monday)
]
然后我生成了一个大小等于我的数据框中的日期列
cal = SpainBusinessCalendar()
holidays = cal.holidays(start=df['Date'].min(), end=df['Date'].max())
这给出了以下
为了生成df
带有假期的列,由列中的值产生"Date"
,我已经完成了
df['Feriado'] = df['Date'].isin(holidays).astype(int)
然而,正如人们可以从holidays
输出的图像中猜到的那样,如果一个人正在处理每小时数据,在这种情况下,它只会在第一个小时(时间为 00:00)选择为假期。
我应该如何进行,以便在分析中holidays
忽略小时,并为特定的假日日期分配相应的值。
编辑
两个都
holidays = cal.holidays(start=df['Data'].dt.date.min(), end=df['Data'].dt.date.max())
和
holidays = cal.holidays(start=df['Data'].dt.floor('d').min(), end=df['Data'].dt.floor('d').max())
给出与上图相同的输出。