Collé sur ce qui suit.read_hdf où échoue 'toutes les variables de réfrences doivent être une référence à un axe ...'
log_iter = pd.read_hdf(FN, dspath,
where = [pd.Term('hashID','=',idList)],
iterator=True,
chunksize=3000)
Le dspath a 35 colonnes et peut être assez volumineux, ce qui provoque l'erreur MemoryError.
Essayez donc d'utiliser la route iteator/chunksize. Mais le « où » = clause ne parvient pas à
ValueError: The passed where expression: [hashID=[147685,...,147197]]
contains an invalid variable reference
all of the variable refrences must be a reference to
an axis (e.g. 'index' or 'columns'), or a data_column
The currently defined references are: ** list of column names **
Le problème est que Hached est pas dans la liste des noms de colonnes. Cependant, si oui
read_hdf(FN, dspath).columns
Le hashID se trouve dans les colonnes. Aucune suggestion? Mon but est de lire dans toutes les lignes x 35 colonnes dont hashID est dans idList.
Mise à jour. Les travaux suivants et montre que le Hached existe sous la forme d'une colonne, une fois l'ensemble de données est lue.
def dsIterator(self, q, idList):
hID = u'hashID'
FN = self.db._hdf_FN()
dspath = self.getdatasetname(q)
log_iter = pd.read_hdf(FN, dspath,
#where = [pd.Term(u'logid_hashID','=',idList)],
iterator=True,
chunksize=30000)
n_all = 0
retDF = None
for dfChunk in log_iter:
goodChunk = dfChunk.loc[dfChunk[hID].isin(idList)]
if retDF is None : retDF = goodChunk
else:
retDF = pd.concat([retDF, goodChunk], ignore_index=True)
n_all += dfChunk[hID].count()
n_ret = retDF[hID].count()
return retDF
Remarque, j'utilise python2. Ainsi, le 'hashID' doit utiliser u'hashID 'comme nom de colonne. – frankr6591