Промежутки времени Datafrate
У меня есть датафрейм за год в котором нужно по колонке дат определить промежутки с 20:00 одного дня до 13:30 следующего дня и каждому блоку в этом промежутке назначить свой id. я попытался сделать это через query, но туда видимо нельзя передавать значения чтобы зациклить.
res = model.query("'2016-01-06 20:00:00' <= date < '2016-01-07 13:30:00'")
у меня получилось для первого промежутка сделать это вручную
date Work_id
1 2016-01-04 20:15:00 0
2 2016-01-04 20:30:00 0
3 2016-01-04 20:45:00 0
4 2016-01-04 21:00:00 0
5 2016-01-04 22:00:00 0
6 2016-01-05 00:30:00 0
7 2016-01-05 11:00:00 0
8 2016-01-05 11:15:00 0
9 2016-01-05 11:45:00 0
10 2016-01-05 12:00:00 0
11 2016-01-05 12:30:00 0
12 2016-01-05 12:45:00 0
13 2016-01-05 13:00:00 0
14 2016-01-05 13:15:00 0
Как это можно сделать ?
Ответы (1 шт):
Автор решения: passant
→ Ссылка
Ну, примерно так:
df[(df['date'].dt.time>=dt.datetime.strptime('20:25:00','%H:%M:%S').time() )
&(df['date'].dt.time<=dt.datetime.strptime('20:55:00','%H:%M:%S').time() )]
Конкретно на моих данных: было
df.date
Out[76]:
0 2016-01-04 20:15:00
1 2016-01-04 20:30:00
2 2016-01-04 20:45:00
3 2016-01-04 21:00:00
4 2016-01-04 22:00:00
5 2016-01-05 20:15:00
6 2016-01-05 20:30:00
7 2016-01-05 20:45:00
8 2016-01-05 21:00:00
9 2016-01-05 22:00:00
10 2016-01-06 20:15:00
11 2016-01-06 20:30:00
12 2016-01-06 20:45:00
13 2016-01-06 21:00:00
стало:
Out[77]:
1 2016-01-04 20:30:00
2 2016-01-04 20:45:00
6 2016-01-05 20:30:00
7 2016-01-05 20:45:00
11 2016-01-06 20:30:00
12 2016-01-06 20:45:00
А поскольку ВОСПРОИЗВОДИМОГО примера своего скрипта вы не привели - то дальше (конкретное условие, необходимость трансформации типов, название столбцов и пр.) под свою задачу тюнингуйте сами.