Python 使用&;/np.where()/np.any()

Python 使用&;/np.where()/np.any(),python,pandas,numpy,boolean,any,Python,Pandas,Numpy,Boolean,Any,我有一个数据框,看起来像: a A a B a C a D a E a F p A p B p C p D p E p F 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 1

我有一个数据框,看起来像:

   a A  a B  a C  a D  a E  a F  p A  p B  p C  p D  p E  p F
0    0    0    0    0    0    0    0    0    0    0    0    0
1    1    0    0    0    0    0    0    0    0    0    0    0
2    0    1    0    0    0    0    0    0    1    0    0    0
3    0    0    1    0    0    1    0    0    0    0    0    0
4    0    0    0    1    0    1    0    0    0    0    0    0
5    0    0    0    0    1    0    0    0    0    0    0    0
6    0    0    0    0    0    0    1    0    0    0    0    0

df = pd.DataFrame({'p A':[0,0,0,0,0,0,1],'p B':[0,0,0,0,0,0,0],'p C':[0,0,1,0,0,0,0],'p D':[0,0,0,0,0,0,0],'p E':[0,0,0,0,0,0,0],'p F':[0,0,0,0,0,0,0],'a A':[0,1,0,0,0,0,0],'a B':[0,0,1,0,0,0,0],'a C':[0,0,0,1,0,0,0],'a D':[0,0,0,0,1,0,0],'a E':[0,0,0,0,0,1,0],'a F': [0,0,0,1,1,0,0]})
注意:这是我实际数据的简化版本

a代表实际情况;p代表预测值;A-F表示一系列标签

我想写一个查询,对于我的数据帧中的每一行,当:(p columns中的所有行值=0)和(a columns中的至少一个行值=1)时返回True,即对于每一行,p columns固定为0,a column=1

使用和的答案 我目前通过使用
&
np.any()


有没有一种更简洁易读的方法可以实现这一点?

您可以使用
~
来反转布尔掩码,并按位置选择:

print (~df.iloc[:,6:11].any(1) & df.iloc[:,0:6].any(1))
0    False
1     True
2    False
3     True
4     True
5     True
6    False
dtype: bool
或用于按列名选择,用于检查至少一个
True
,或用于检查每行是否所有值均
True

该函数用于与
0
进行比较

print (~df.filter(like='p').any(1) & df.filter(like='a').any(1))
0    False
1     True
2    False
3     True
4     True
5     True
6    False
dtype: bool


哪一个是最“Pythonic”/“Pandas”中使用最多的?这取决于您,但我更喜欢更多的
过滤器
解决方案,因为更具动态性-如果添加一些列,解决方案仍然可以完美工作。好的,太好了。谢谢
print (~df.filter(like='p').any(1) & df.filter(like='a').any(1))
0    False
1     True
2    False
3     True
4     True
5     True
6    False
dtype: bool
print (df.filter(like='p').eq(0).all(1) & df.filter(like='a').any(1))
0    False
1     True
2    False
3     True
4     True
5     True
6    False
dtype: bool