可为空的布尔数据类型#
备注
BooleanArray 目前是实验性的。其 API 或实现可能会在没有警告的情况下更改。
使用 NA 值进行索引#
pandas 允许使用布尔数组中的 NA 值进行索引,这些值被视为 False。
如果您希望保留 NA 值,可以手动用 fillna(True) 填充它们。
Kleene 逻辑运算#
arrays.BooleanArray 为逻辑运算(如 & (与)、| (或) 和 ^ (异或))实现了 Kleene Logic (有时称为三值逻辑)。
此表格展示了所有组合的结果。这些操作具有对称性,因此交换左右两侧在结果上没有区别。
表达式 |
结果 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
当操作中存在 NA 时,只有当仅凭其他输入无法确定结果时,输出值才会是 NA。例如,True | NA 是 True,因为 True | True 和 True | False 都是 True。在这种情况下,我们实际上不需要考虑 NA 的值。
另一方面,True & NA 是 NA。结果取决于 NA 实际上是 True 还是 False,因为 True & True 是 True,而 True & False 是 False,所以我们无法确定输出。
这与 np.nan 在逻辑运算中的行为不同。pandas 将 np.nan 在输出中视为*始终为 false*。
在 or 中
在 and 中