【问题标题】:I am able to read a file, but not able to see the result on Google Colab我能够读取文件,但无法在 Google Colab 上看到结果
【发布时间】:2023-03-03 13:05:02
【问题描述】:
df01 = pd.read_json('/content/drive/MyDrive/project/rio_bq_2019000000000000',lines=True)

此行没有错误。但它在下一行有错误,我不明白这里发生了什么。我在 google colab 上读到的

df01

我收到如下错误:

AttributeError                            Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/IPython/core/formatters.py in __call__(self, obj)
    336             method = get_real_method(obj, self.print_method)
    337             if method is not None:
--> 338                 return method()
    339             return None
    340         else:

1 frames
/usr/local/lib/python3.7/dist-packages/pandas/io/formats/format.py in to_html(self, buf, encoding, classes, notebook, border)
    986         notebook : {True, False}, optional, default False
    987             Whether the generated HTML is for IPython Notebook.
--> 988         border : int
    989             A ``border=border`` attribute is included in the opening
    990             ``<table>`` tag. Default ``pd.options.display.html.border``.

AttributeError: 'NotebookFormatter' object has no attribute 'get_result'
        Building    Level  ...        lng                    localtime
0           TPS1  Level 2  ... -43.249902  2019-08-01 02:52:33.289 UTC
1           TPS1  Level 2  ... -43.250474  2019-08-01 02:52:35.488 UTC
2           TPS1  Level 2  ... -43.251573  2019-08-01 02:52:36.268 UTC
3           TPS1  Level 2  ... -43.249719  2019-08-01 02:52:41.537 UTC
4           TPS1  Level 2  ... -43.249737  2019-08-01 02:52:41.538 UTC
...          ...      ...  ...        ...                          ...
3372900     TPS1  Level 2  ... -43.250513  2019-08-25 10:21:01.483 UTC
3372901     TPS1  Level 2  ... -43.250169  2019-08-25 10:21:02.024 UTC
3372902     TPS1  Level 2  ... -43.250169  2019-08-25 10:21:02.026 UTC
3372903     TPS1  Level 2  ... -43.249944  2019-08-25 10:21:02.536 UTC
3372904     TPS1  Level 2  ... -43.249944  2019-08-25 10:21:02.536 UTC

我可以看到数据已导入 df01,如错误输出底部所示。但我不能使用它。为什么?我该如何解决这个问题?

如果您需要,这是我的示例数据文件

 {"Building":"TPS2","Level":"Level 3","ClientMacAddr":"8c:8e:f2:7d:2f:de","lat":-22.813377029213196,"lng":-43.247283256092494,"localtime":"2019-11-28 17:49:00.753 UTC"}
{"Building":"TPS2","Level":"Level 3","ClientMacAddr":"8c:8e:f2:7d:2f:de","lat":-22.813377029213196,"lng":-43.247283256092494,"localtime":"2019-11-28 17:49:00.753 UTC"}
{"Building":"TPS2","Level":"Level 3","ClientMacAddr":"00:27:15:00:10:1f","lat":-22.814628521677054,"lng":-43.24741506118599,"localtime":"2019-11-28 17:49:01.58 UTC"}
{"Building":"TPS2","Level":"Level 3","ClientMacAddr":"00:27:15:00:10:1f","lat":-22.814628521677054,"lng":-43.24741506118599,"localtime":"2019-11-28 17:49:01.58 UTC"}

在这之前我只有两行

import pandas as pd
drive.mount("/content/drive")

【问题讨论】:

  • 我认为这里没有足够的信息来帮助您。如果输入文件的读取和反 JSON 没有失败,则 df01 必须仅包含列表、映射和原子数据类型。使用该值做任何事情本身不可能导致执行您向我们展示的代码。那么你在用df01 做什么呢?是什么导致您向我们展示的代码被执行?还有一个问题是,所引用的属性get_result 在您向我们展示的代码中的任何地方都找不到,因此很难知道为什么会发生这种情况。
  • @CryptoFool 从0-3372904行属性错误后的结果可以看出。所以我猜笔记本已经读过了,但输出是错误的。我只在此行之前使用 drive.mount 并将 pandas 作为 pd 导入。我可以阅读我的 txt 文件,向您展示我的文件中包含的内容
  • 你不能单独执行df01 这不是我担心的事情。它不是有效的 Python,因此它也是语言或环境的某种扩展。如果您认为它可以在 REPL 中工作,那是对的,但这是 REPL 的扩展,而不是 Python 语言本身的一部分。 - 话虽如此,如果它适用于某些变量但不适用于其他变量,那么我将其称为错误,如果它导致像您看到的错误一样,无论如何它都是错误。

标签: python jupyter-notebook google-colaboratory


【解决方案1】:

我仍然不知道发生了什么。但我只是弄清楚自己

这种情况下我只能用 print 输出

像 df01 在 jupyter 中运行良好,但在 google lab 中我只能在 print(df01) 中编写

如果你遇到这个错误

AttributeError: 'NotebookFormatter' object has no attribute 'get_result'

请在您正在输出的每一行中添加 print()

【讨论】:

  • 我遇到了同样的问题,感谢您分享您的解决方案。唯一的问题是使用 print() 会使 Google Colab 魔术命令 %load_ext google.colab.data_table 失效,这是一个奇怪的错误...
  • 我在使用 Kaggle 笔记本时遇到了同样的问题,我想我明白了问题所在。我通过笔记本中的 pip 调用将 pandas 升级到了最新版本,但 pandas 库甚至会自动加载到内核中在导入之前。这在某种程度上导致了差异。如果我升级后检查熊猫版本,它仍然是旧版本。
【解决方案2】:

我在 colab 上遇到了同样的问题 我所做的只是转到运行时并单击重新启动运行时

【讨论】:

    【解决方案3】:

    我的一个项目遇到了同样的问题。您只需重新启动会话即可。

    【讨论】:

      【解决方案4】:

      如果你在 colab 上工作,这个问题可能是因为安装了其他包。就我而言,安装 pyLDAvis 包会导致此错误。

      【讨论】:

        【解决方案5】:

        当您遇到此类错误时,很可能是 json 文件存在格式错误。尝试在 Online JSON 解析器(s.t. : http://json.parser.online.fr/)上复制过去的 json 文件,看看是否有拼写错误。

        【讨论】:

        • json 没有错误,但我只能使用 print() 进行输出。不知道为什么,我觉得google colab是jupyter notebook,可以直接用df01命令输出
        • 好的。您是否也检查了 utf encofing 格式?
        • 我可以将输入读入 Pandas。但是,要认识到的一件事是您的输入不是有效的 JSON 文件,因为它包含多个字典实体,它们周围没有“[”和“]”。 JSON 文件始终包含单一结构。 - 这似乎与问题无关。我认为 Pandas 能够将其作为标准 JSON 格式的扩展来处理
        【解决方案6】:

        我在 colab 上遇到了同样的问题,已解决:

        !pip install -U pandas-profiling
        

        【讨论】: