簡體   English   中英

isin 假期只識別第一個小時

[英]isin holidays only recognizing the first hour

我在西班牙的假期中創建了一個 class

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)
   ]

然后我生成一個大小等於我的 dataframe 中的日期列

cal = SpainBusinessCalendar()
holidays = cal.holidays(start=df['Date'].min(), end=df['Date'].max())

這給出了以下

在此處輸入圖像描述

為了生成一個帶有假期的df列,由"Date"列中的值產生,我已經完成了

df['Feriado'] = df['Date'].isin(holidays).astype(int)

但是,正如人們從holidays output 的圖像中可以猜到的那樣,如果使用的是每小時數據,在這種情況下,它只會在第一個小時(時間為 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())

給出與上圖相同的 output。

使用沒有時間組件的日期創建了一個列

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)

最后刪除了我不想要的列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM