У меня есть вопрос относительно того, как фильтровать результаты в функции pd.read_hdf. Итак, вот настройка, у меня есть pandas dataframe (с индексом np.datetime64), который я вложил в файл hdf5. Здесь нет ничего интересного, поэтому не нужно использовать иерархию или что-то еще (возможно, я мог бы включить ее?). Вот пример:Pandas read_hdf запрос по дате и времени
Foo Bar
TIME
2014-07-14 12:02:00 0 0
2014-07-14 12:03:00 0 0
2014-07-14 12:04:00 0 0
2014-07-14 12:05:00 0 0
2014-07-14 12:06:00 0 0
2014-07-15 12:02:00 0 0
2014-07-15 12:03:00 0 0
2014-07-15 12:04:00 0 0
2014-07-15 12:05:00 0 0
2014-07-15 12:06:00 0 0
2014-07-16 12:02:00 0 0
2014-07-16 12:03:00 0 0
2014-07-16 12:04:00 0 0
2014-07-16 12:05:00 0 0
2014-07-16 12:06:00 0 0
Теперь я храню это в .h5 с помощью следующей команды:
store = pd.HDFStore('qux.h5')
#generate df
store.append('data', df)
store.close()
Далее, у меня будет еще один процесс, который получает доступ к этой информации, и я хотел бы взять дату/временных фрагментов этих данных. Поэтому предположим, что мне нужны даты между 2014-07-14 и 2014-07-15, и только в промежутках между 12:02:00 и 12:04:00. В настоящее время я использую следующую команду, чтобы получить это:
pd.read_hdf('qux.h5', 'data', where='index >= 20140714 and index <= 20140715').between_time(start_time=datetime.time(12,2), end_time=datetime.time(12,4))
Насколько я знаю, кто-то пожалуйста, поправьте меня, если я ошибаюсь здесь, но весь исходный набор данных не считывается в память, если я использую ' где'. Итак, другими словами:
это:
pd.read_hdf('qux.h5', 'data', where='index >= 20140714 and index <= 20140715')
не то же самое, как это:
pd.read_hdf('qux.h5', 'data')['20140714':'20140715']
Хотя конечный результат в точности то же самое, что делается в фоновом режиме нет. Поэтому мой вопрос: есть ли способ включить этот фильтр временного интервала (т. Е. .between_time()) в оператор where? Или, если есть другой способ, я должен создать свой файл hdf5? Может быть, хранить столик на каждый день?
Спасибо!
EDIT:
Что касается использования иерархии, я знаю, что структура должна быть в значительной степени зависит от того, как я буду использовать данные. Однако, если предположить, что я определяю таблицу за дату (например, «df/date_20140714», «df/date_20140715», ...). Опять же, я могу ошибаться здесь, но используя свой пример запроса времени/диапазона времени; Вероятно, я понесу штраф за исполнение, поскольку мне нужно будет прочитать каждую таблицу и объединить их, если я хочу получить консолидированный вывод?
Можно ли объединить его с регулярным предложением 'where' строки, например, например. если я хочу также фильтровать '' sym = 'RIC' "'? –