我想要产生的东西我觉得很常见。我基本上想要在很长一段时间内创建一个DateTimeIndex(例如1年),在9到5之间每10分钟增加一行,不包括周末和自定义假日之外的时间。
到目前为止,我有:
rng = pd.date_range(start="2015-09-01 07:00", end="2015-11-15 17:30", freq="600S", tz="Europe/London")
rng = rng[rng.indexer_between_time('07:00','17:30')]
答案 0 :(得分:1)
这个列表理解能让你在工作日的早上7点到下午5点30分之间获得:
rng = [d for d in rng
if d.weekday() < 5
and d.hour >= 7
and d.hour < 18
and (False if d.hour == 17 and d.minute > 30
else True)
]
您需要为假期创建日期列表。这往往是针对具体位置的,所以我会把它留给你。然后只过滤那些日期。
holidays = [...] # dates
rng = [d for d in rng if d not in holidays]
然后创建DateTimeIndex:
dt_idx = pd.DateTimeIndex(rng)
>>> dt_idx
<class 'pandas.tseries.index.DatetimeIndex'>
[2015-09-01 07:00:00+01:00, ..., 2015-11-15 17:30:00+00:00]
Length: 10870, Freq: 10T, Timezone: Europe/London