Используйте boolean indexing
с маской, созданной filter
для получения всех столбцов с team
, сравните с eq
(==
) и получите по крайней мере один True
на строки any
:
df = df[df.filter(like='team').eq('kk').any(axis=1)]
#if want select columns by names
#df = df[df[['team1','team2']].eq('kk').any(axis=1)]
Для повышения производительности используйте numpy.any
:
df = df[np.any(df.filter(like='team').values == 'kk', axis=1)]
print (df)
name marks team1 team2
0 John 30 kk vv
6 juile 32 ww kk
Подробности:
print (df.filter(like='team').eq('kk'))
team1 team2
0 True False
1 False False
2 False False
3 False False
4 False False
5 False False
6 False True
print (df.filter(like='team').eq('kk').any(axis=1))
0 True
1 False
2 False
3 False
4 False
5 False
6 True
dtype: bool