Pandas在每天2次之间创建一个日内DateTimeIndex,不包括周末和假日

时间:2015-10-01 07:33:23

标签: python pandas

我想要产生的东西我觉得很常见。我基本上想要在很长一段时间内创建一个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')]

1 个答案:

答案 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