无法在Pandas数据帧中替换True和False

39 浏览
0 Comments

无法在Pandas数据帧中替换True和False

我在Python的pandas DataFrame中有一列布尔值True/False,但是为了进一步计算,我需要用1/0表示。有没有一种快速的pandas/numpy方法来实现这个?

0
0 Comments

问题的原因是在Pandas数据帧中无法替换True和False。解决方法是使用以下方法之一:

1. 使用astype()方法将布尔列转换为整数列:

df['my_column'] = df['my_column'].astype(int)

2. 使用replace()方法将布尔值替换为整数值:

df['my_column'].replace({True: 1, False: 0}, inplace=True)

3. 在使用聚合函数时,将布尔列转换为整数列:

df.groupby("some_other_column").agg({"my_column": lambda x: x.astype(int).mean()})

4. 使用numpy的logical_xor()函数代替减法运算符来避免错误:

import numpy as np
df['my_column'] = np.logical_xor(df['my_column'], True)

需要注意的是,布尔列和整数列在某些操作中具有不同的行为,如使用加法运算符时。因此,在进行特定操作时,需要小心处理数据类型。

0
0 Comments

问题的原因是在Pandas dataframe中无法直接替换True和False。解决方法是通过将DataFrame乘以1(int)来替换True和False。这种方法的优势是可以保留DataFrame中的浮点类型,而 df.astype(int) 会将其破坏。另外,使用 data * 1 可以处理字符串类型,而 data + 0 会报错。此外,data * 1 的写法更简洁。

0