Je tente d'interroger une table multi-index dans un magasin HDF pandas, mais elle échoue lors de l'utilisation d'une requête sur l'index et sur data_columns en même temps. Cela se produit uniquement lorsque data_columns=True
. Toute idée si cela est prévu, ou comment éviter si je ne veux pas explicitement spécifier les colonnes data_columns?Problèmes lors de l'interrogation d'une table multi-index dans HDF lors de l'utilisation de data_columns
Voir l'exemple suivant, il semble qu'il ne reconnaît pas l'indice de référence valable:
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)
Merci pour le hack, je soupçonne que ce n'est pas censé être comme ça. J'ai soulevé un problème avec les pandas, je verrai ce qu'ils disent. Je suppose que nous pouvons fermer celui-ci ici. –
@MMCM_, oui, c'est intéressant ce que dira l'équipe de base de Pandas à ce sujet - je surveillerai votre problème sur GitHub ... – MaxU
semble comme ils vont le réparer. –