2016-10-12 5 views
4

私はpandasと一緒に作業していて、週の日曜日の夜は午後6時から始まり、金曜日の午後は午後4時から始まる一ヶ月のカスタム日付範囲を作成したいと考えています。毎日22時間ですので、たとえば日曜日の午後6時から午後4時、月曜日の午後6時から火曜日の午後4時など。Pythonのカスタム日付範囲を作成する

私はday_range = pd.date_range(datetime(2016,9,12,18),datetime.now(),freq='H')を試しましたが、それはいつも24時間で私に与えます。

提案がありますか?

答えて

2

あなたはdate_rangeCustom Business Hourが必要になります。

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