2016-10-12 46 views
4

我正在與熊貓一起工作,並希望創建一個爲期一個月的自定義日期範圍,其中星期週六晚上的開始時間爲週六晚上,週五下午4點結束。每天有22個小時,例如星期日下午6點到星期一下午4點,星期一下午6點到星期二下午4點等。創建自定義日期範圍,每天22小時python

我試過day_range = pd.date_range(datetime(2016,9,12,18),datetime.now(),freq='H'),但是總是在24小時內給我。

有什麼建議嗎?

回答

2

您需要Custom Business Hourdate_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') 

測試 - 它省略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') 
+0

如果我想包括週日,但在什麼不均勻模式?因此,例如我想要星期一到星期四開始= 00:00,結束= 16:00,然後再次開始= 18:00結束= 24:00,星期五開始= 00:00,結束= 16:00和星期天開始= 18:00,結束= 24:00?該功能可以處理這個? – A1122

+0

也許你需要創建2個範圍,然後減去它。 – jezrael

+0

我嘗試創建'開始'時間更高,但它返回錯誤的結果。可能trere是這個自定義營業時間有問題的問題。 – jezrael