我试图在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}}