PythonPandas:不包括假日,从1分钟的频率范围

2024-03-29 07:03:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着在pandas内制作date_range,频率为1分钟,并且只在英国工作日和工作时间内。在

看看this answer,我可以大致了解到:

import pandas as pd
rng = pd.date_range('2016-01-01','2016-02-29',freq='1min')
rng=rng[rng.indexer_between_time('09:00','17:00')] #exclude non-working hours
rng=rng[rng.dayofweek<5] #exclude weekends
dates = rng.to_series()

但我不知道如何排除假日。换句话说,是否可以将一组排除日期传递给date_range?在

我可以做的是为每个工作周期创建单独的范围,然后将它们放在一起,但我认为可能有更好的方法。在

Pandas有一个AbstractHolidayCalendar类来处理这类事情,但是我不知道如何将它与一分钟的频率结合起来。如果你重新取样,额外的天数会被加回去。在

^{pr2}$
rng2 = pd.date_range('2015-04-08','2016-04-08',freq=CDay(calendar=cal))
tester=rng2.to_series()
tester2=tester.resample('1min')
t3=tester2[tester2.index.indexer_between_time('09:00','17:00')]

>>> len(t3['2015-08-31 09:08:00':'2015-08-31 09:22:00'])
15 #the excluded days are still present

Tags: topandasdatetimerangebetweenexclude频率