Используйте DataFrame.any
для проверки, если в отфильтрованных столбцах хотя бы одно значение равно True
для строк:
df = pd.DataFrame({
'A':list('abcdef'),
'CAN_060':[400,512,4,5,5,400],
'PS_30':[742,8,9,4,200,300],
'COC_20':[100,3,5,7,100,100],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')
})
print (df)
A CAN_060 PS_30 COC_20 E F
0 a 400 742 100 5 a
1 b 512 8 3 3 a
2 c 4 9 5 6 a
3 d 5 4 7 9 b
4 e 5 200 100 2 b
5 f 400 300 100 4 b
cols = ['CAN_060','PS_30','COC_20']
print ((df[cols] < 96))
CAN_060 PS_30 COC_20
0 False False False
1 False True True
2 True True True
3 True True True
4 True False False
5 False False False
df1 = df[(df[cols] < 96).any(axis=1)]
print (df1)
A CAN_060 PS_30 COC_20 E F
1 b 512 8 3 3 a
2 c 4 9 5 6 a
3 d 5 4 7 9 b
4 e 5 200 100 2 b
#for AND for testing if all values per rows are True
df2 = df[(df[cols] < 96).all(axis=1)]
print (df2)
A CAN_060 PS_30 COC_20 E F
2 c 4 9 5 6 a
3 d 5 4 7 9 b