【问题标题】:Exception raised after loading pickle file: 'DataFrame' object has no attribute '_data'加载泡菜文件后引发异常:“DataFrame”对象没有属性“_data”
【发布时间】:2021-01-22 08:36:10
【问题描述】:

我正在尝试加载包含字典的 pickle 文件:

import pickle as pk

# load dMAD
dMAD_open = open(r"dMAD.pickle", "rb")
dMAD = pk.load(dMAD_open)
dMAD_open.close()

type(dMAD) # prints correctly: "dict"
dMAD # throws the error message

加载工作不会引发错误,但是一旦我尝试打印 dMAD(应该重新运行字典),我就会收到以下错误消息:

AttributeError: 'DataFrame' 对象没有属性 '_data'

我已经尝试了不同的 conda 环境和不同的 python 安装(python 3.7.7 和 3.8.2)。 泡菜文件和我的代码在同一个目录中。 它可以在不同的计算机上运行。它不适用于我,即使我使用相同的 conda 环境。

我该如何解决这个问题?任何帮助表示赞赏。

【问题讨论】:

  • 你能发布完整的代码吗?看起来错误出现在此处未显示的行上。对 DataFrame 的引用表明您可能正在使用 pandas ?
  • 这是我正在运行的所有代码。转储pickle文件的代码可能正在使用pandas,但我不知道,因为我无权访问它,我只能得到pickle文件。但是即使我导入了 pandas,错误信息仍然是一样的。
  • 我发现这可能会有所帮助。腌制数据报和您的环境之间似乎存在熊猫版本问题。 stackoverflow.com/questions/63559007/…
  • 显然现在无法编辑我的评论,但显然我想说的是数据框。自动更正。

标签: python pickle


【解决方案1】:

最终,它在运行 python 3.8.5 和 pandas 1.1.3 的环境中运行

【讨论】:

    【解决方案2】:

    您可能希望手动捕获异常,例如:

    try:
        open(r"dMAD.pickle", "rb")
    catch Exception as e:
        print(e) # you will find what is going on here
    

    甚至更深入地了解这个字典里面的内容

    dir(dMAD)
    

    如果您认为这是环境错误,请继续从头开始重新安装它,很可能就是这种情况。 请记住,如果您最近在本地计算机上升级了 python 版本,如果没有将旧版本保留在同一路径中,则会损坏所有旧虚拟环境。

    尝试删除旧环境并安装新环境。

    【讨论】:

      猜你喜欢
      • 2021-04-05
      • 1970-01-01
      • 2020-12-12
      • 2022-01-05
      • 2020-09-25
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      • 2021-01-30
      相关资源
      最近更新 更多