Pandas boolean algebra:如果两列都为True,则为True

时间:2016-01-04 20:01:45

标签: python pandas

我想创建一个布尔向量,它是通过比较两个输入布尔向量创建的。我可以使用for循环,但是有更好的方法吗?

我理想的解决方案如下:

df['A'] = [True, False, False, True]
df['B'] = [True, False, False, False]
C = ((df['A']==True) or (df['B']==True)).as_matrix()
print C

>>> True, False, False, True

2 个答案:

答案 0 :(得分:2)

我认为这就是你要找的东西:

C = (df['A']) | (df['B'])
C

0     True
1    False
2    False
3     True
dtype: bool

然后您可以将其保留为系列或将其转换为列表或数组

答案 1 :(得分:2)

或者,您可以使用any方法和axis=1搜索索引。它也适用于您具有True值的任意数量的列:

In [1105]: df
Out[1105]: 
       B      A
0   True   True
1  False  False
2  False  False
3  False   True

In [1106]: df.any(axis=1)
Out[1106]: 
0     True
1    False
2    False
3     True
dtype: bool