0

我有一些包含熊猫数据框的莳萝文件。这些数据框是使用 pandas 1.2.4 创建的。现在我需要使用 pandas 1.3(modin 需要)。

在使用 pandas 1.3 的脚本中,我需要加载这些 dill 文件。这是不可能的,因为 pandas 1.3 无法处理反序列化或解释这些旧对象。我得到这个例外:

TypeError: __cinit__() takes at least 2 positional arguments (0 given)

我知道pandas.read_pickle,它应该为保存旧版本熊猫对象的泡菜文件解决这个问题(即提供向后兼容性)。但是我被 dill 困住了,因为除了数据框之外,文件还包含只有 dill 可以序列化的自定义类。

因此,我正在寻找一种方法来转换旧的 pandas 对象并重新保存 dill 文件,以便能够使用 pandas 1.3 加载它们。有没有办法做到这一点?

谢谢!

编辑:我不希望反汇编文件内容,例如我有一个自定义对象,其属性包含数据框。我可能可以使用 pandas 1.2.4 加载文件,将所有 pandas 对象存储在单独的 pickle 文件中,并将自定义对象存储在 dill 文件中。然后切换到pandas 1.3,用dill加载pickle文件,用pandas.read_pickledill加载dill文件,重新组装对象层次,用dill保存。所以我不得不将我的问题改写为:有没有更直接、更不容易出错的方法呢?

4

0 回答 0