我有以下数据,
name marks team1 team2
John 30 kk vv.
Sera 56 gg ww.
Saara 66 dd gg.
Dirg 33 rr dd.
maget 34 ff rr.
fared 56 vv ff.
juile 32 ww kk.
我需要有通用公式来逐行获取记录,其中在团队 1 和团队 2 中有“kk”这只是一个示例数据,我有超过 100k 行的实际数据。
我有以下数据,
name marks team1 team2
John 30 kk vv.
Sera 56 gg ww.
Saara 66 dd gg.
Dirg 33 rr dd.
maget 34 ff rr.
fared 56 vv ff.
juile 32 ww kk.
我需要有通用公式来逐行获取记录,其中在团队 1 和团队 2 中有“kk”这只是一个示例数据,我有超过 100k 行的实际数据。
使用forboolean 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