将 0 和 1 (float64) 转换为布尔值时将空值转换为 True [重复]
Posted
技术标签:
【中文标题】将 0 和 1 (float64) 转换为布尔值时将空值转换为 True [重复]【英文标题】:Null values converted to True when converting 0 & 1 (float64) to boolean [duplicate] 【发布时间】:2020-11-27 07:03:45 【问题描述】:我正在处理从 excel 文件导入 Jupyter 笔记本的数据集。原始文件有一列包含 True 和 False 值。当转换为数据框时,这些值变成了 float64 类型的 0 和 1。该列也有一些缺失值。
我尝试使用将它们转换回布尔类型
.astype('bool')
很奇怪,我发现丢失的数据被转换为True。
为什么会这样??!!
我尝试通过仅选择 notnull()
值来避免这种情况,但类型更改为 Object not boolean
【问题讨论】:
【参考方案1】:这是因为 everything 评估为 True 而 空字符串 评估为 False。例如,您可以尝试以下操作:
List= ['True','False','False','False']
df= pd.DataFrame(List)
那么就可以使用map
来正确切换值了:
df= df[0].map('False':False, 'True':True)
在您的情况下,您有 nan 值。因此:
import numpy as np
import pandas as pd
List = ['True','False','False','True','True',np.nan,'False']
df = pd.DataFrame(List)
df = df[0].map('False':False, 'True':True, np.nan:"")
df
输出:
0 True
1 False
2 False
3 True
4 True
5
6 False
Name: 0, dtype: object
【讨论】:
我认为这仅适用于我有 True & False 的情况。我有 0 和 1 并想将它们转换为 true 和 false,然后所有的空值都变成了 true,所以我不知道映射哪个是空/null以上是关于将 0 和 1 (float64) 转换为布尔值时将空值转换为 True [重复]的主要内容,如果未能解决你的问题,请参考以下文章
将 float64 列转换为 datetime pandas 时出错
JAVA中一个float除以一个int变量,得到的结果精确到几位?