将True/False转换为1/0 Python

29 浏览
0 Comments

将True/False转换为1/0 Python

在Python的pandas DataFrame中,我有一列包含布尔值True/False的数据,但是为了进一步计算,我需要将其表示为1/0。有没有一种快速的pandas/numpy方法可以实现这个转换?

0
0 Comments

问题出现的原因:在将布尔值转换为整数1或0时,如果待转换的列中存在NaN值,使用astype(int)方法会失败。

解决方法:可以使用replace()方法将True转换为1.0,False转换为0.0(浮点数),同时保留NaN值。具体代码如下:

df.somecolumn = df.somecolumn.replace({True: 1, False: 0})

另外,如果待转换的值是文本形式的,如小写的"true"或"false",可以先使用astype(bool)将其转换为布尔值,然后再使用astype(int)进行转换。

如果要将多个列应用此转换方法,可以考虑使用循环遍历所有列进行转换。

如果不想指定列名,可以使用如下命令进行转换:

df = df.astype(int)

此外,还可以考虑使用可空整数类型(nullable integer types)代替int类型,如"Int64"或"Int8"(注意大写)。

通过以上方法,我们可以将布尔值转换为整数1或0,并解决了在转换过程中存在NaN值的问题。同时,还提供了一些额外的转换方法和注意事项,如处理文本形式的布尔值和使用可空整数类型等。

0