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

时间:2017-01-29 11:29:12

标签: python python-2.7 pandas pickle

我收到此错误

ValueError: unsupported pickle protocol: 4

来自我的代码

full_df = pd.read_pickle('df_userID.pickle')

使用python2.7

运行脚本时

(在Ubuntu 14.04.5上,3.13.0-95-generic)

感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

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

Import-Csv 'C:\path\to\input.csv' | ForEach-Object {
  $row = $_
  $row.id -replace '[{}]' -split ',' | ForEach-Object {
    $row | Select-Object -Property *,@{n='id';e={$_}} -ExcludeProperty id
  }
} | Export-Csv 'C:\path\to\output.csv' -NoType

pickle.dump(df, file_name, protocol=4)

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

<强>解决方案:

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

pickle.dump(df, file_name, protocol=-1)

或:

df.to_pickle('/path/to/df.pickle')  # preferred and version independent solution

另一个选择是使用HDFStore(H5)或FeatherFormat - 这两个选项都非常快速可靠。