python - python 列表中的过滤无值返回 : TypeError: boolean value of NA is ambiguous

标签 python python-3.x pandas

我曾经使用“filter”方法从 python (3.9.5) 列表中过滤掉 None 值。 目前,在升级多个依赖项(pandas 1.3.1、numpy 1.23.5 等)时,我得到以下信息:

import pandas as pd
x = pd.array(['This is', 'some text', None, 'data.'], dtype="string")
x = list(x.unique())
list(filter(None, x))

返回:TypeError:NA 的 bool 值不明确

请对更改内容以及如何解决问题提供任何好的解释,我将不胜感激。

最佳答案

通过这样做也可以重现此错误

>>> bool(x[2])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pandas/_libs/missing.pyx", line 446, in pandas._libs.missing.NAType.__bool__
TypeError: boolean value of NA is ambiguous

正如查看 source code 所看到的那样这是故意的,因为 NA 并不是真正的 True 或 False,它的 bool 值是不明确的,因为它是一个“缺失值指示符”。

    def __bool__(self):
        raise TypeError("boolean value of NA is ambiguous")

所以基本上你不能通过调用访问类的方法 bool 方法的函数来比较它。

解决这个问题的最简单方法是@NIKUNJ PATEL

>>> x = list(x.dropna().unique())

关于python - python 列表中的过滤无值返回 : TypeError: boolean value of NA is ambiguous,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75580189/

相关文章:

python - 基于列表复制 pandas 数据框中的行并用列表条目填充新列

python - 如何从 pandas 中的在线 zip 链接读取 Excel 文件

python - pandas 在创建面板时保留数据类型

python - 我的执行文件。从 pyinstaller 创建的文件不像 .py 时那样工作(Pyexcel 问题)

python - 获取与 tkinter 文本小部件关联的所有标签?

python - 如何在此代码中添加函数 try/except?

python - 如何根据值中存储的列表的第 n 个条目返回键的排序列表?

python - 如何在 10 秒后强制用户输入

python - 如何加快cross_val_score的速度?

python - 多级索引中的聚合