熊猫节假日中的自定义假日遵守情况

时间:2019-08-22 08:23:35

标签: python python-3.x pandas datetime time-series

我想创建圣诞节和第二天的假期类,但是遇到一个问题。我无法完全解决三种特殊情况中的一种。

案例1:圣诞节是星期五,然后假期是星期五(12-25)和星期六(12-26)(已解决)。这种情况发生在2020年

案例2:圣诞节是星期六,然后假期是星期六(12-25)和星期一(12-27)(已解决)。这种情况发生在2021年

案例3:圣诞节是星期天,然后假期是星期一(12-26)和星期二(12-27)(未解决)。这种情况发生在2016年

如果observance= monday_to_tuesday可用,情况3可以解决,但遗憾的是没有,这就是为什么我在这里寻求帮助,因为pandas tseries user guide并没有说明创建自定义遵守或关于任何星期几遵守的情况。

我正在研究的课程如下:


from pandas.tseries.holiday import Holiday, sunday_to_monday, AbstractHolidayCalendar

import pandas as pd
import datetime as dt

class MyHolidays(AbstractHolidayCalendar):
    rules = [Holiday('Christmas',month=12,day=25, observance= sunday_to_monday),
             Holiday('Boxingday',month=12,day=26, observance= sunday_to_monday)]

cal= MyHolidays()

if __name__ == '__main__':
    myholidays =cal.holidays(start = dt.datetime(2016,1,1), end=dt.datetime(2021,12,31))
    temp_s = pd.Series(myholidays)
    print(temp_s)

总有办法解决我的问题吗?预先谢谢你

1 个答案:

答案 0 :(得分:1)

您可以在existing ones之后滚动自己的观察功能。它们只是常规的python函数,因此您也可以使用如下所示的lambda:

System.grtProperties()

输出:

from pandas.tseries.holiday import Holiday, sunday_to_monday, AbstractHolidayCalendar

import pandas as pd
import datetime as dt

class MyHolidays(AbstractHolidayCalendar):
    rules = [Holiday('Christmas',month=12,day=25, observance= sunday_to_monday),
             Holiday('Boxingday',month=12,day=26, observance= lambda d: d + dt.timedelta(1) if d.weekday() == 0 or d.weekday() == 6 else d )]

cal= MyHolidays()

if __name__ == '__main__':
    myholidays =cal.holidays(start = dt.datetime(2016,1,1), end=dt.datetime(2021,12,31))
    temp_s = pd.Series(myholidays)
    print(temp_s)
相关问题