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
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.
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
.