如何解决isin 假期只识别第一个小时
我在西班牙创建了一个假期班
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',day=6,Holiday('Viernes Santo',offset=[Easter(),Day(-2)]),Holiday('Día del Trabajador',month=5,Holiday('Asunción de la Virgen',month=8,day=15,Holiday('Día de la Hispanidad',month=10,day=12,Holiday('Todos los Santos',month=11,Holiday('Día Constitución',month=12,Holiday('Inmaculada Concepción',day=8,Holiday('Navidad',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())
给出与上图相同的输出。
解决方法
创建一个没有时间组件的日期列
df['Date_notime'] = df['Data'].dt.floor('d')
然后从该列生成假期
holidays = cal.holidays(start=df['Date_notime'].dt.date.min(),end=df['Date_notime'].dt.date.max())
然后喜欢
df['Feriado'] = df['Date_notime'].isin(holidays).astype(int)
最后删除了我不想要的列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。