2016-11-21 1 views
0

私はdatetimeオブジェクトのリストを持っています。日付範囲は複数年にまたがります。複数の日付にまたがるdatetimeオブジェクトのリストを2時間ごとのビンに入れます

これらの日付を2時間ごとのビンに分割したいと思います。したがって、0時間のビンでは、23:00 - 1:00のすべての時刻がこのビンに入ります(+/- 1時間)。

最後に、ビン内にある各日時のインデックスの一覧が必要です。

結果が[0]私に最も近い日付時刻に対応する索引のリストを与える
[[], 
[4], 
[], 
[], 
[], 
[], 
[1,3], 
[], 
[], 
[], 
[0,2], 
[]] 

:私の日時リストは

datetime.datetime(2014, 10, 3, 20, 29, 54, 268074), 
    datetime.datetime(2014, 10, 4, 11, 28, 34, 59937), 
    datetime.datetime(2014, 10, 4, 19, 40, 39, 718856), 
    datetime.datetime(2016, 8, 18, 12, 17, 57, 417245), 
    datetime.datetime(2016, 8, 19, 1, 37, 57, 465573) 

のようなものだったのであれば、私のようなリストのリストの結果が欲しいです0:00、result [0]は2:00などに最も近いリストを返します。

私の最初の考えは、datetime.timeオブジェクトを使用して時間のリストを作成し、次にリストから日時を減算することでした最小値を見つける。

import datetime 
hrs = array([datetime.time(t) for t in arange(0,24,2)]) 
closetHr = min(hrs - times[0].time()) 

しかし、これは時間の減算を避け、私にエラーunsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

+0

他にどのような輸入品を使用していますか? –

答えて

1

これはサンプル入力のために期待される出力を生成を与える:これはあなたがたときに欲しいものない場合

bins = [[] for t in arange(0,24,2)] 
for i,t in enumerate(times): 
    ix = (t.hour+1)%24  # "normalize" the hour 
    bins[ix/2].append(i) # convert to a bin index 

明確ではありません値が奇数時間境界(すなわち1:00)にあるが、指定しなかった。

+0

パーフェクト。私のすべての時間はミリ秒に下がり、したがって私のデータセットの境界に決して落ちることはないので、ここでは問題ではありません。 – hm8

+0

時間の両サイドで+/- 1.5時間で3時間ビンに分割するにはどうすればよいですか?したがって、最初のビンは22:30 - 1:30(0:00 + /1 1.5時間)、2番目は1:30 - 4:30などとなります。 – hm8

+0

@ user3826115:これは独自の質問ですが、 't.minute'を考慮に入れる必要があります。 –

関連する問題