Spyder 控制台抛出“[SpyderKernelApp] 错误 | 消息处理程序中出现异常”错误

Lat*_*sss 11 python ipython python-3.x pandas spyder

我是Python新手,使用Spyder作为我的IDE,我主要用它来进行数据分析。几天前,由于某些原因我重新安装了Spyder。现在,当我想直接在 iPython 控制台中输入 pandas 相关命令(例如df.info()或)时df.describe(),我会在输出后看到错误消息(不过我确实得到了正确的输出)。表明:

[SpyderKernelApp] ERROR | Exception in message handler:
Traceback (most recent call last):
  File "/opt/homebrew/lib/python3.11/site-packages/ipykernel/kernelbase.py", line 409, in dispatch_shell
    await result
  File "/opt/homebrew/lib/python3.11/site-packages/ipykernel/kernelbase.py", line 798, in inspect_request
    reply_content = self.do_inspect(
                    ^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/ipykernel/ipkernel.py", line 555, in do_inspect
    bundle = self.shell.object_inspect_mime(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/IPython/core/interactiveshell.py", line 1838, in object_inspect_mime
    return self.inspector._get_info(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/IPython/core/oinspect.py", line 738, in _get_info
    info_dict = self.info(obj, oname=oname, info=info, detail_level=detail_level)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/IPython/core/oinspect.py", line 838, in info
    if info and info.parent and hasattr(info.parent, HOOK_NAME):
  File "/opt/homebrew/lib/python3.11/site-packages/pandas/core/generic.py", line 1466, in __nonzero__
    raise ValueError(
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这只在我尝试手动键入命令时才会出现,并且仅在我使用 pandas 相关命令时才会出现。当我从脚本运行命令时,甚至简单地使用向上箭头键在控制台中选择命令时,错误消息不会显示;它仅在我手动键入命令时显示。

我在互联网上查找了该错误,但没有发现任何讨论。我该如何处理这个错误?

我重新安装了 Spyder、Python、iPython、ipykernel、spyder-kernels,但似乎没有任何帮助。

jay*_*llr 3

同样在这里。Spyder 的全新安装,具有以下设置详细信息:

  • Spyder 5.4.2 独立版
  • Miniconda 环境,包含 Python 3.9.16、Pandas 1.5.3 和spyder-kernels 2.4.2
  • Windows 11 22H2(操作系统内部版本 22621.1485)
  • 联想 Thinkpad X1 Extreme 搭载 i7/3050Ti/32GB/1TB

一些观察结果:

  • Series 方法也会发生这种情况,例如,df["column"].min()
  • ValueError消息显示“ DataFrame的真实性不明确”与我更常见的系列错误;不确定这是否有助于解决问题
  • 使用不同的切片方法时不会出现错误

上面的第三点确实提供了一种解决方法,即使不是真正的解决方案(因此我将其作为答案而不是评论发布)。具体来说,df.loc[rows, columns].<method>工作没有问题。这意味着像这样的 DataFrame 方法describe将被实现为df.loc[:, :].describe().