我刚从源代码编译并安装了pandas(克隆的github repo,>>> setup.py install).
碰巧的是pickle,对象序列化/反序列化模块的默认行为发生了变化,可能被pandas内部模块部分覆盖了.
我有一些通过"标准"序列化的数据类pickle,显然我不能再反序列化了; 特别是,当我尝试反序列化一个类文件(肯定工作)时,我得到了这个错误
In [1]: import pickle
In [2]: pickle.load(open('pickle_L1cor_s1.pic','rb'))
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-2-88719f8f9506> in <module>()
----> 1 pickle.load(open('pickle_L1cor_s1.pic','rb'))
/home/acorbe/Canopy/appdata/canopy-1.1.0.1371.rh5-x86_64/lib/python2.7/pickle.pyc in load(file)
1376
1377 def load(file):
-> 1378 return Unpickler(file).load()
1379
1380 def loads(str):
/home/acorbe/Canopy/appdata/canopy-1.1.0.1371.rh5-x86_64/lib/python2.7/pickle.pyc in load(self)
856 while 1:
857 key = read(1)
--> 858 dispatch[key](self)
859 except _Stop, stopinst:
860 return stopinst.value
/home/acorbe/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pandas-0.12.0_1090_g46008ec-py2.7-linux-x86_64.egg/pandas/compat/pickle_compat.pyc in load_reduce(self)
28
29 # try to reencode the arguments
---> …Run Code Online (Sandbox Code Playgroud) 我有一个用旧版本的 pandas (0.19.2) 保存的腌制数据框。尝试使用新版本的 Pandas (0.20.3) 读取它 (pd.read_pickle()) 会引发错误:
ModuleNotFoundError:没有名为“pandas.indexes”的模块
有什么办法,如何使用新的 pandas 版本检索该 pickled 数据框,而不必返回并在旧版本中以不同的方式保存它?
如果不是,那么存储数据帧最安全、最简单的方法是什么,以便将来可以轻松读取它们?我读到了 HDFStore,这看起来相当麻烦......