Панды: выбор данных между воскресеньем 23:00- пятницей 23:00 (интервал в 1 год)
У меня есть временные ряды курса обмена евро к доллару США с мелкой детализацией, охватывающие весь 2015 год, включая неторговые дни (например, выходные), когда значение временных рядов повторяется в течение всего неторгового периода.
Мне нужно отбросить такие периоды, выбрав только данные между 23:00 воскресенья и 23:00 пятницы.
Я еще не нашел решение для Панд (я знаю, как выбирать между временами внутри дня и выбирать между днями). Я мог бы просто сдвинуть время на 1 час, а затем выбрать только рабочие дни, но это неоптимальное решение.
Есть идеи, как этого добиться?
Пример данных:
Local time, Open, High, Low, Close, Volume
02.01.2015 22:58:00.000, 1.20008, 1.20016, 1.20006, 1.20009, 119.84
02.01.2015 22:59:00.000, 1.20009, 1.20018, 1.20004, 1.20017, 40.61
02.01.2015 23:00:00.000, 1.20017, 1.20017, 1.20017, 1.20017, 0
02.01.2015 23:01:00.000, 1.20017, 1.20017, 1.20017, 1.20017, 0
...
04.01.2015 22:58:00.000, 1.20017, 1.20017, 1.20017, 1.20017, 0
04.01.2015 22:59:00.000, 1.20017, 1.20017, 1.20017, 1.20017, 0
04.01.2015 23:00:00.000, 1.19495, 1.19506, 1.19358, 1.19410, 109.4
04.01.2015 23:01:00.000, 1.19408, 1.19414, 1.19052, 1.19123, 108.12
...
1 ответ
Рассмотреть pd.DataFrame
df
а также pd.tseries.index.DatetimeIndex
tidx
tidx = pd.date_range('2010-01-01', '2011-01-01', freq='H')
df = pd.DataFrame(np.ones((tidx.shape[0], 2)), tidx, columns=list('AB'))
мы можем построить ряд значений для фильтрации
day_hour = (((tidx.weekday + 1) % 7) * 100) + tidx.hour
определить, какие значения до 23:00 пятницы
before_friday = day_hour <= 523
А после воскресенья 23:00
after_sunday = day_hour >= 23
Фильтр наш df
на основании вышеуказанных условий
df[before_friday & after_sunday]