AttributeError:无法获取属性“_unpickle_block”

No-*_*Day 28 python pickle dataframe pandas

使用时:

with open("data_file.pickle", "rb") as pfile:
     raw_data = pickle.load(pfile)  
Run Code Online (Sandbox Code Playgroud)

我收到错误:

AttributeError: Can't get attribute '_unpickle_block' on <module 'pandas._libs.internals' from '/opt/conda/lib/python3.8/site-packages/pandas/_libs/internals.cpython-38-x86_64-linux-gnu.so'>
Run Code Online (Sandbox Code Playgroud)

类似问题的另一个答案建议检查我正在使用的pickle 版本。在我开发代码的机器上和运行代码的服务器上都是一样的。我到处寻找都没有答案。请帮忙。

Cor*_*ien 24

我认为问题不是pickle模块而是Pandas版本。您的文件可能是使用旧版本的Pandas. 现在您使用较新的版本,pickle无法“反序列化”对象,因为 API 发生了变化。

尝试降级您的Pandas版本并重新加载文件。您也可以尝试使用pd.read_pickle.


小智 8

就我而言,我必须升级而不是降级 Pandas 版本。只要确保它们匹配即可。给未来读者的一些提示:

询问版本:

import pandas as pd
pd.__version__
Run Code Online (Sandbox Code Playgroud)

并更改版本(替换为您自己的版本)

%pip install pandas==1.4.1
Run Code Online (Sandbox Code Playgroud)