Вы можете сравнить все столбцы, отфильтрованные по списку по подмножеству, по eq
(==
) с DataFrame.any
- проверьте наличие хотя бы одного True
в строке:
myDF = pd.DataFrame({
'A':list('abcdef'),
'col1':[4,1,4,5,5,4],
'col2':[7,8,9,1,2,3],
'col3':[1,3,5,7,4,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')
})
print (myDF)
A col1 col2 col3 E F
0 a 4 7 1 5 a
1 b 1 8 3 3 a
2 c 4 9 5 6 a
3 d 5 1 7 9 b
4 e 5 2 4 2 b
5 f 4 3 0 4 b
listColumnName=['col1','col2','col3']
df = myDF[myDF[listColumnName].eq(1).any(axis=1)]
print (df)
A col1 col2 col3 E F
0 a 4 7 1 5 a
1 b 1 8 3 3 a
3 d 5 1 7 9 b
Подробности :
print (myDF[listColumnName])
col1 col2 col3
0 4 7 1
1 1 8 3
2 4 9 5
3 5 1 7
4 5 2 4
5 4 3 0
print (myDF[listColumnName].eq(1))
col1 col2 col3
0 False False True
1 True False False
2 False False False
3 False True False
4 False False False
5 False False False
print (myDF[listColumnName].eq(1).any(axis=1))
0 True
1 True
2 False
3 True
4 False
5 False
dtype: bool