web-dev-qa-db-fra.com

Python - read_pickle ImportError: aucun module nommé indexes.base

J'écris une trame de données numérique dans un fichier .pkl sur une machine (df.to_pickle ()), pour une raison quelconque, je dois ouvrir ce fichier sur une autre machine (pd.read_pickle ()), j'obtiens une erreur d'importation disant: Non module nommé indexes.base, et lorsque j'essaie d'importer des index, il ne semble pas en avoir un.

Lorsque j'ai essayé to_csv sur une machine et read_csv sur une autre, cela a fonctionné.

Merci beaucoup!


ImportError                               Traceback (most recent call last)
<ipython-input-199-2be4778e3b0a> in <module>()
----> 1 pd.read_pickle("test.pkl")

C:\Users\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\io\pickle.pyc in read_pickle(path)
 58 
 59     try:
---> 60         return try_read(path)
 61     except:
 62         if PY3:

C:\Users\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\io\pickle.pyc in try_read(path, encoding)
 55             except:
 56                 with open(path, 'rb') as fh:
---> 57                     return pc.load(fh, encoding=encoding, compat=True)
 58 
 59     try:

C:\Users\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\compat\pickle_compat.pyc in load(fh, encoding, compat, is_verbose)
114         up.is_verbose = is_verbose
115 
--> 116         return up.load()
117     except:
118         raise

C:\Users\AppData\Local\Continuum\Anaconda2\lib\pickle.pyc in load(self)
856             while 1:
857                 key = read(1)
--> 858                 dispatch[key](self)
859         except _Stop, stopinst:
860             return stopinst.value

C:\Users\AppData\Local\Continuum\Anaconda2\lib\pickle.pyc in load_global(self)
1088         module = self.readline()[:-1]
1089         name = self.readline()[:-1]
--> 1090         klass = self.find_class(module, name)
1091         self.append(klass)
1092     dispatch[GLOBAL] = load_global

C:\Users\AppData\Local\Continuum\Anaconda2\lib\pickle.pyc in find_class(self, module, name)
1122     def find_class(self, module, name):
1123         # Subclasses may override this
--> 1124         __import__(module)
1125         mod = sys.modules[module]
1126         klass = getattr(mod, name)

ImportError: No module named indexes.base
27
Sapling

Cette erreur peut être causée par une incompatibilité de version entre la version de pandas utilisée pour enregistrer la trame de données et la version de pandas utilisée pour la charger).

Veuillez vérifier la version Python et Pandas dans les deux machines).

De plus, si les versions sont les mêmes, pouvez-vous partager la trame de données que vous avez utilisée avec to_pickle (), afin que nous puissions l'examiner.

36
pmaniyan

En utilisant pd.read_pickle peut également aider à la compatibilité descendante si vous essayez de lire uniquement une trame de données. Voir problème github .

J'ai malheureusement un dictionnaire de trames de données, donc je vais essayer d'utiliser un environnement virtuel avec une version plus ancienne pour charger, réenregistrer uniquement les trames de données, puis utiliser pd.read_pickle.

3
elz