使用pandas,我们可以做类似于这样的事情:
>>> i1 = pandas.Interval(pandas.Timestamp('2021-08-25 09:00:00'), pandas.Timestam
p('2021-08-25 18:00:00'))
>>> i2 = pandas.Interval(pandas.Timestamp('2021-08-26 09:00:00'), pandas.Timestam
p('2021-08-26 18:00:00'))
>>> ii = pandas.IntervalIndex([i1, i2])
>>> ii
IntervalIndex([(2021-08-25 09:00:00, 2021-08-25 18:00:00], (2021-08-26 09:00:00,
2021-08-26 18:00:00]],
closed='right',
dtype='interval[datetime64[ns]]')
这样我们就可以得到一个人两天工作时间的区间索引。但这很繁琐,而且不太DRY(想象一下为整个月的所有工作日创建这样的索引)。 问题是是否可能用更少的代码来做同样的事情?也许可以通过使用
pandas.interval_range
来完成,就像我们使用pandas.date_range
一样。>>> pandas.date_range(date(2021, 1, 1), date(2021, 7, 1), freq='B')
DatetimeIndex(['2021-01-01', '2021-01-04', '2021-01-05', '2021-01-06',
'2021-01-07', '2021-01-08', '2021-01-11', '2021-01-12',
'2021-01-13', '2021-01-14',
...
'2021-06-18', '2021-06-21', '2021-06-22', '2021-06-23',
'2021-06-24', '2021-06-25', '2021-06-28', '2021-06-29',
'2021-06-30', '2021-07-01'],
dtype='datetime64[ns]', length=130, freq='B')