我有几个用 Python 2.7 编译的 pickle 文件,可以用 Python 3.11 中的 pandas 读取,但有一个无法加载。这是我遇到问题的代码部分:
import json
import pickle
import pandas as pd
with open('path', 'rb') as f:
data = pickle.load(f)
出现以下错误:
import pandas as pd
Traceback (most recent call last):
File "path", line 7, in <module>
data = pickle.load(f)
^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/copyreg.py", line 49, in _reconstructor
obj = object.__new__(cls)
^^^^^^^^^^^^^^^^^^^
TypeError: object.__new__(BlockManager) is not safe, use BlockManager.__new__()
我读到这是一个关于创建pickle文件时使用的pandas版本的问题,但我尝试过的任何方法都不起作用,我想知道该文件是否只是损坏了。
我已经尝试过:
joblib.load(path)
pd.read_pickle(path)
没有选项允许我读取 pickle 文件。试试这个:
import pandas as pd
with open('path_to_pickle_file', 'rb') as f:
data = pd.read_pickle(f)
data.to_csv('path_to_csv_file.csv', index=False)
data = pd.read_csv('path_to_csv_file.csv')