У меня есть фрейм данных Pandas с данными форекс по минутам, длиной в год (371635 строк):
O H L C
0
2017-01-02 02:00:00 1.05155 1.05197 1.05155 1.05190
2017-01-02 02:01:00 1.05209 1.05209 1.05177 1.05179
2017-01-02 02:02:00 1.05177 1.05198 1.05177 1.05178
2017-01-02 02:03:00 1.05188 1.05200 1.05188 1.05200
2017-01-02 02:04:00 1.05196 1.05204 1.05196 1.05203
Я хочу отфильтровать дневные данные, чтобы получить диапазон часов:
dt = datetime(2017,1,1)
df_day = df1[df.index.date == dt.date()]
df_day_t = df_day.between_time('08:30', '09:30')
Если я делаю цикл for
с 200 днями, это занимает минуты. Я подозреваю, что на каждом шагу эта строка
df_day = df1[df.index.date == dt.date()]
ищет равенство с каждой строкой в наборе данных (даже если это упорядоченный набор данных).
Есть ли способ ускорить фильтрацию, или я должен просто сделать какой-то старый императив for
цикл с января по декабрь ...?