Python Pandas:从1分钟频率日期范围中排除假日天数

时间:2016-07-14 15:55:30

标签: python python-2.7 pandas

我试图在date_range pandas中以1分钟的频率制作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() ,并且只在英国工作日和工作时间内制作。

this answer,我可以在那里大部分时间:

date_range

但我不确定如何排除假期。换句话说,是否可以将一组排除日期传递给concat

我能做的是为每个工作时段创建单独的范围,然后将AbstractHolidayCalendar组合在一起,但我认为可能有更好的方法。

Pandas有这类from pandas.tseries.holiday import Holiday, AbstractHolidayCalendar from pandas.tseries.offsets import CDay import datetime class ExampleCalendar(AbstractHolidayCalendar): rules =[Holiday('August Bank holiday',month=8,day=31)] cal = ExampleCalendar() 课程,但我无法弄清楚如何将其与一分钟频率相结合。如果您重新采样,额外的天数会被重新加入。

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
{{1}}

0 个答案:

没有答案