Выделить датафрейм по временному промежутку
Есть датафрейм из многих дней. Как сделать, чтобы весь дф был скажем с 14:00 до 19:00 каждого дня?
Пример:
3/9/2017 7:21:00 138.55
3/9/2017 7:18:00 138.68
3/9/2017 7:15:00 138.65
3/9/2017 7:11:00 138.68
3/9/2017 7:07:00 138.61
3/9/2017 7:06:00 138.65
3/9/2017 7:01:00 138.7
3/9/2017 6:51:00 138.59
3/9/2017 6:49:00 138.7
3/9/2017 6:36:00 138.57
3/9/2017 6:32:00 138.7
3/9/2017 6:10:00 138.71
3/9/2017 5:18:00 139.03
3/9/2017 5:17:00 139.05
3/9/2017 4:17:00 139.31
3/9/2017 4:04:00 139.24
3/8/2017 19:56:00 139.04
3/8/2017 19:52:00 139.09
3/8/2017 19:36:00 139
3/8/2017 19:34:00 139.04
3/8/2017 19:33:00 139.02
3/8/2017 19:29:00 139.02
3/8/2017 19:05:00 139.04
3/8/2017 18:57:00 139.04
3/8/2017 18:35:00 139.04
3/8/2017 18:30:00 139.01
3/8/2017 18:13:00 139
3/8/2017 18:08:00 139
3/8/2017 17:43:00 138.91
3/8/2017 17:41:00 138.92
3/8/2017 17:31:00 139
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Как-то так:
Исходный DF (последние 3 строки):
In [51]: df.tail(3)
Out[51]:
Date Time Val
28 3/8/2017 17:43:00 138.91
29 3/8/2017 17:41:00 138.92
30 3/8/2017 17:31:00 139.00
решение:
res = (df
.reset_index()
.set_index(pd.to_datetime(df["Date"] + " " + df["Time"]))
.between_time("14:00", "19:00")
.set_index("index"))
результат:
In [65]: res
Out[65]:
Date Time Val
index
23 3/8/2017 18:57:00 139.04
24 3/8/2017 18:35:00 139.04
25 3/8/2017 18:30:00 139.01
26 3/8/2017 18:13:00 139.00
27 3/8/2017 18:08:00 139.00
28 3/8/2017 17:43:00 138.91
29 3/8/2017 17:41:00 138.92
30 3/8/2017 17:31:00 139.00