pandas - 我可以在 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>]
这对于可空整数来说是完全正确的行为,我只需要一种可用于可空布尔值的类型。
解决方案
boolean
dtype 应该工作:
>>> 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
推荐阅读
- python - 使用 PySpark 根据行值模式对记录进行分组
- rust - 如何在不使用 wasm-pack 的情况下将 Rust 项目编译为 Wasm?
- .net - .NET Core 2.1 个人账户邮递员登录
- python - 如何从 YFinance API 中提取多家公司的信息
- android - 单击按钮并将数据显示到recyclerview android时如何更改firestore的查询
- spring-boot - 日志中未打印 Spring 横幅
- javascript - jquery wordpress Uncaught TypeError:无法读取未定义的属性“消息”
- git - 在 gitpod 中增加超时
- sql - 同时进行左连接和清理值吗?
- c# - C# List.Add() 在方法中作为参数。不同的列表类型(int 和 string)