【发布时间】:2018-01-21 02:37:00
【问题描述】:
我为德国创建了一个假期日历(不包括所有日子),如下所示:
from pandas.tseries.holiday import Holiday,AbstractHolidayCalendar
class GermanHolidays(AbstractHolidayCalendar):
rules = [Holiday('New Years Day', month=1, day=1),
Holiday('First of May', month=5, day=1),
Holiday('German Unity Day', month=10,day=3),
...]
cal = GermanHolidays()
现在我希望在假期出现或不出现(“1”或“0”)时显示一列。所以我做了以下事情:
holidays = cal.holidays(start=X['Time (CET)'].min(), end = X['Time (CET)'].max())
X['Holidays'] = X['Time (CET)'].isin(holidays)
X['Holidays'] = X['Holidays'].astype(float)
X 是一个数据框,其中Time (CET) 是%d.%m.%Y %H:%M:%S 格式的列。不幸的是,这不起作用。没有引发错误,但所有列都标有"0"。所以没有匹配发生,我真的不知道为什么。
我认为这可能是因为假期的频率是每天而不是每小时,就像在Time (CET) 列中那样。
如果你能帮助我,那就太好了!谢谢!
【问题讨论】:
-
这可能是因为
X['Time (CET)']包含日期字符串而不是datetime64s。X['Time (CET)'].dtype的值是多少? -
感谢您的评论。该列在 dtype datetime64s 中。抱歉没提!
标签: python pandas datetime dataframe calendar