相关疑难解决方法(0)

熊猫中的布尔值和缺失值

我试图弄清楚熊猫数据框中的列是否是布尔值(如果是,是否有缺失值等等)。

为了测试我创建的函数,我尝试创建一个带有缺失值的布尔列的数据框。但是,我会说缺失值在 python 中完全“无类型”处理,并且有一些奇怪的行为:

> boolean = pd.Series([True, False, None])
> print(boolean)

0     True
1    False
2     None
dtype: object
Run Code Online (Sandbox Code Playgroud)

因此,当您将 None 放入列表时,它被视为对象,因为 python 无法将类型 bool 和 type(None)=NoneType 混合回 bool。math.nan和也会发生同样的事情numpy.nan。当你试图强迫熊猫进入它不想去的区域时,最奇怪的事情发生了:-)

> boolean = pd.Series([True, False, np.nan]).astype(bool)
> print(boolean)
0     True
1    False
2     True
dtype: bool
Run Code Online (Sandbox Code Playgroud)

所以'np.nan'被转换为'True'?

问题:

  1. 给定一个数据表,其中一列是“对象”类型,但实际上它是一个带有缺失值的布尔列:我如何弄清楚?过滤非缺失值后,它仍然是“对象”类型……我是否需要将每一列的 try-catch-cast 实现为每个可以想象的数据类型,以便查看列的真实性质?

  2. 我想对于为什么 np.nan 被强制转换为 True 有一个合乎逻辑的解释,但这是软件 pandas/python 本身不需要的行为,对吗?那么我应该提交错误报告吗?

python dataframe pandas

7
推荐指数
1
解决办法
1626
查看次数

标签 统计

dataframe ×1

pandas ×1

python ×1