问题描述
我试图在Pandas中获取包含布尔值的2列,并创建第三列,即这些布尔值的OR.
I am trying to take 2 columns in Pandas that contain Boolean values and create a third column that is the OR of these Boolean values.
例如,我的数据框当前包含A和B,并且我想创建C.
For example, my dataframe currently contains A and B, and I want to create C.
A B C
True True True
False False False
True False True
False True True
我的代码:
df['C']=df['A'] or df['B']
我试图以几种方式更改语句的结构,但最终得到相同的错误消息:
I have tried to change the structure of the statement several ways but end up with the same error message:
ValueError:系列的真值不明确.使用a.empty,a.bool(),a.item(),a.any()或a.all().
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
推荐答案
使用 np.logical_or
:
In [436]:
df['C'] = np.logical_or(df['A'], df['B'])
df
Out[436]:
A B C
0 True True True
1 False False False
2 True False True
3 False True True
您不能在这里使用or
运算符,因为它变得比较模棱两可.
You can't use or
operator here as it becomes ambiguous comparing arrays.
或使用按位|
运算符进行数组比较:
or use the bitwise |
operator for array comparisons:
In [445]:
df['C'] = df['A'] | df['B']
df
Out[445]:
A B C
0 True True True
1 False False False
2 True False True
3 False True True
这篇关于Python/Pandas中的布尔列比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!