Я пытаюсь запросить таблицу с несколькими индексами в хранилище HDF в pandas, но это не удается при использовании запроса по индексу и data_columns в одно и то же время. Это происходит только тогда, когда data_columns=True
. Любая идея, если это ожидается, или как избежать, если я не хочу явно указывать data_columns?Проблемы с запросом таблицы multiindex в HDF при использовании data_columns
Смотрите следующий пример, кажется, он не признает индекс в качестве действительного ссылки:
import pandas as pd
import numpy as np
file_path = 'D:\\test_store.h5'
np.random.seed(1234)
pd.set_option('display.max_rows',4)
# simulate some data
index = pd.MultiIndex.from_product([np.arange(10000,10200),
pd.date_range('19800101',periods=500)],
names=['id','date'])
df = pd.DataFrame(dict(id2=np.random.randint(0, 1000, size=len(index)),
w=np.random.randn(len(index))),
index=index).reset_index().set_index(['id', 'date'])
# store the data
store = pd.HDFStore(file_path,mode='a',complib='blosc', complevel=9)
store.append('df_dc_None', df, data_columns=None)
store.append('df_dc_explicit', df, data_columns=['id2', 'w'])
store.append('df_dc_True', df, data_columns=True)
store.close()
# query the data
start = '19810201'
print(pd.read_hdf(file_path,'df_dc_None', where='date>start & id=10000'))
print(pd.read_hdf(file_path,'df_dc_True', where='id2>500'))
print(pd.read_hdf(file_path,'df_dc_explicit', where='date>start & id2>500'))
try:
print(pd.read_hdf(file_path,'df_dc_True', where='date>start & id2>500'))
except ValueError as err:
print(err)
Спасибо за хака, я подозреваю, что это не должно быть. Я поднял вопрос с пандами, посмотрю, что они говорят. Наверное, мы можем закрыть это здесь. –
@MMCM_, да, интересно, что скажут об этом основной команде Pandas - я буду следить за вашей проблемой на GitHub ... – MaxU
похоже, что они исправит это. –