创建自定义日期范围,每天 22 小时 python

A11*_*122 5 python datetime date-range hour pandas

我正在与 pandas 合作,想要创建一个为期一个月的自定义日期范围,其中一周从周日晚上 6 点开始,到周五下午 4 点结束。每天有 22 小时,例如周日下午 6 点到周一下午 4 点,周一下午 6 点到周二下午 4 点,等等。

我试过了day_range = pd.date_range(datetime(2016,9,12,18),datetime.now(),freq='H'),但总是在 24 小时内给我。

有什么建议么?

jez*_*ael 2

Custom Business Hour需要date_range

cbh = pd.offsets.CustomBusinessHour(start='06:00', 
                                    end='16:00', 
                                    weekmask='Mon Tue Wed Thu Fri Sat')
print (cbh)
<CustomBusinessHour: CBH=06:00-16:00>

day_range = pd.date_range(pd.datetime(2016,9,12,18),pd.datetime.now(),freq=cbh)
print (day_range)
DatetimeIndex(['2016-09-13 06:00:00', '2016-09-13 07:00:00',
               '2016-09-13 08:00:00', '2016-09-13 09:00:00',
               '2016-09-13 10:00:00', '2016-09-13 11:00:00',
               '2016-09-13 12:00:00', '2016-09-13 13:00:00',
               '2016-09-13 14:00:00', '2016-09-13 15:00:00',
               ...
               '2016-10-11 08:00:00', '2016-10-11 09:00:00',
               '2016-10-11 10:00:00', '2016-10-11 11:00:00',
               '2016-10-11 12:00:00', '2016-10-11 13:00:00',
               '2016-10-11 14:00:00', '2016-10-11 15:00:00',
               '2016-10-12 06:00:00', '2016-10-12 07:00:00'],
              dtype='datetime64[ns]', length=252, freq='CBH')
Run Code Online (Sandbox Code Playgroud)

测试 - 它省略Sunday

day_range = pd.date_range(pd.datetime(2016,9,12,18),pd.datetime.now(),freq=cbh)[45:]
print (day_range)
DatetimeIndex(['2016-09-17 11:00:00', '2016-09-17 12:00:00',
               '2016-09-17 13:00:00', '2016-09-17 14:00:00',
               '2016-09-17 15:00:00', '2016-09-19 06:00:00',
               '2016-09-19 07:00:00', '2016-09-19 08:00:00',
               '2016-09-19 09:00:00', '2016-09-19 10:00:00',
               ...
               '2016-10-11 08:00:00', '2016-10-11 09:00:00',
               '2016-10-11 10:00:00', '2016-10-11 11:00:00',
               '2016-10-11 12:00:00', '2016-10-11 13:00:00',
               '2016-10-11 14:00:00', '2016-10-11 15:00:00',
               '2016-10-12 06:00:00', '2016-10-12 07:00:00'],
              dtype='datetime64[ns]', length=207, freq='CBH')
Run Code Online (Sandbox Code Playgroud)