ValueError:不支持的pickle协议:4个带有pandas

jjr*_*jrr 4 python pickle python-2.7 pandas

我收到这个错误

ValueError: unsupported pickle protocol: 4
Run Code Online (Sandbox Code Playgroud)

从我的代码行

full_df = pd.read_pickle('df_userID.pickle')
Run Code Online (Sandbox Code Playgroud)

使用python2.7运行脚本时

(在Ubuntu 14.04.5上,3.13.0-95-通用)

感谢帮助.

Max*_*axU 6

看起来这个pickle文件的创建方式如下:

pickle.dump(df, file_name, protocol=4)
Run Code Online (Sandbox Code Playgroud)

要么

pickle.dump(df, file_name, protocol=-1)
Run Code Online (Sandbox Code Playgroud)

和Python 2.x只接受协议:0,1,2

解:

使用Pandas酸洗或较低协议版本:

df.to_pickle('/path/to/df.pickle')  # preferred and version independent solution
Run Code Online (Sandbox Code Playgroud)

要么:

pickle.dump(df, '/path/to/df.pickle', protocol=2)
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用HDFStore(H5)或FeatherFormat - 两种选择都非常快速和可靠.