我无法读取使用不同版本的 Python pandas 保存的 pickle 文件。我知道以前曾在这里问过这个问题,但是提供的解决方案,使用pd.read_pickle("my_file.pkl")也不起作用。我认为(但我不确定)这些泡菜文件是用比我现在工作的机器更新的熊猫版本创建的。
不幸的是,我不是管理员,我无法更改 pandas 的版本。如何读取我的文件?它们是不可恢复的吗?
小智 5
关于您在评论中关于兼容性的问题,根据与 pickle 相关的文档,“只要选择了兼容的 pickle 协议,pickle 序列化格式保证在 Python 版本之间向后兼容......”如果文件是用较新的协议进行pickle比你正在阅读,你可能不走运。
小智 5
对于在单个单元格中包含列表和数组等对象的数据框,可以保存为 hdf,而不是转换为 csv 文件。
使用最新版本的 python 和 pandas 加载数据(在我的例子中为 python 3.8 和 pandas 1.4.1)。
import pandas as pd
import pickle
data = pd.read_pickle('path/to/file.pkl')
Run Code Online (Sandbox Code Playgroud)
将加载的数据保存为 hdf 文件,并将 pickle 协议设置为 4,并将 key 设置为数据帧
pickle.HIGHEST_PROTOCOL = 4
data.to_hdf('output/folder/path/to/file.hdf', 'df')
Run Code Online (Sandbox Code Playgroud)
使用旧版 python 加载 hdf 文件(我在 google colab 上使用 Python 3.7 和 pandas 1.3.5)
import pandas as pd
data = pd.read_hdf(path)
Run Code Online (Sandbox Code Playgroud)
您将需要与所用版本相同(或更高版本)的 pandas to_pickle。当 pandas 将数据帧转换为 pickle 时,压缩过程特定于该版本。
我建议联系您的管理员并让他们转换pickle to csv为您可以使用任何版本的 pandas 打开它的方式。
除非数据框包含对象 csv 应该没问题