在 Dataframe 中过滤布尔值

Filtering Boolean in Dataframe

我有一个 ±100k 行和 10 列的 df。 我想 find/filter 哪些行至少包含 2 到 4 个真值。 为了简单起见,假设我有这个 df:

 A   B     C     D     E     F
 1  True  True  False False True  
 2  False True  True  True  False 
 3  False False False False False  
 4  True  False False False True  
 5  True  False False False False 

预期输出:

A   B     C     D     E     F
1  True  True  False False True  
2  False True  True  True  False 
4  True  False False False True  

我试过使用

df[(df['B']==True) | (df['C']==True) | (df['D']==True)| (df['E']==True)| (df['F']==True)]

但这只会消除错误行,如果我想找到至少 2/3 正确的实例则不起作用。

有人可以帮忙吗?欣赏一下。

使用DataFrame.select_dtypes for only boolean columns, count Trues by sum and then filter values by Series.between in boolean indexing:

df  = df[df.select_dtypes(bool).sum(axis=1).between(2,4)]
print (df)
   A      B      C      D      E      F
0  1   True   True  False  False   True
1  2  False   True   True   True  False
3  4   True  False  False  False   True