首页 > 解决方案 > 我可以在 Pandas 数据框中使用可以为空的布尔类型吗?

问题描述

在我正在处理的程序中,我必须明确设置包含布尔数据的列的类型。有时此列中的所有值都是无。除非我提供明确的类型信息,否则 Pandas 会为该列推断错误的类型信息。

是否有代表 nullable-bool 的 pandas 兼容类型?我想做这样的事情,但保留无:

s = pandas.Series([True, False, None]).astype(bool)
print([v for v in s])

给出:

[True, False, False]

Python 的内置 bool 类不能有 Null 值。它只能是真或假。而在这种情况下,因为bool(None)==False最终的 Null 丢失了。

但是如果我想保留我的空值怎么办?有没有一种类型我可以给出允许 True、False 和 None 的列?

我已经解决了与数字列类似的问题:对于这些我可以使用 Numpy Int64,它是与 pandas 兼容的可为空整数类型:

s = pandas.Series([1, 2, None, numpy.NaN]).astype("Int64")
print([v for v in s])

给出:

[1, 2, <NA>, <NA>]

这对于可空整数来说是完全正确的行为,我只需要一种可用于可空布尔值的类型。

标签: pandas

解决方案


booleandtype 应该工作:

>>> pd.Series([True, False, None])
0     True
1    False
2     None
dtype: object

>>> pd.Series([True, False, None]).astype("boolean")
0     True
1    False
2     <NA>
dtype: boolean

推荐阅读