Python -- read_pickle ImportError: No module named indexes.base
Python -- read_pickle ImportError: No module named indexes.base
我在一台机器上将一个数字数据帧写入 .pkl 文件 (df.to_pickle()),出于某种原因,我必须在另一台机器上打开这个文件 (pd.read_pickle()) ,我收到一个导入错误消息:没有名为 indexes.base 的模块,当我尝试导入索引时,似乎没有。
当我在一台机器上尝试 to_csv 并在另一台机器上尝试 read_csv 时,它成功了。
非常感谢!
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
此错误可能是由于用于保存数据帧的 pandas 版本与用于加载它的 pandas 版本之间的版本不匹配造成的。
请检查两台机器的Python和Pandas版本。
此外,如果版本相同,能否请您分享您使用 to_pickle() 的数据框,以便我们进行调查。
如果您只想读取数据帧,使用 pd.read_pickle
也有助于向后兼容。参见 github issue。
不幸的是,我有一个数据帧字典,所以我将尝试使用具有旧版本的虚拟环境来加载,re-save 仅数据帧,然后使用 pd.read_pickle
。
我在一台机器上将一个数字数据帧写入 .pkl 文件 (df.to_pickle()),出于某种原因,我必须在另一台机器上打开这个文件 (pd.read_pickle()) ,我收到一个导入错误消息:没有名为 indexes.base 的模块,当我尝试导入索引时,似乎没有。
当我在一台机器上尝试 to_csv 并在另一台机器上尝试 read_csv 时,它成功了。
非常感谢!
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
此错误可能是由于用于保存数据帧的 pandas 版本与用于加载它的 pandas 版本之间的版本不匹配造成的。
请检查两台机器的Python和Pandas版本。
此外,如果版本相同,能否请您分享您使用 to_pickle() 的数据框,以便我们进行调查。
如果您只想读取数据帧,使用 pd.read_pickle
也有助于向后兼容。参见 github issue。
不幸的是,我有一个数据帧字典,所以我将尝试使用具有旧版本的虚拟环境来加载,re-save 仅数据帧,然后使用 pd.read_pickle
。