1

我有以下数据,

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 行的实际数据。

4

1 回答 1

1

使用forboolean indexing创建的掩码,filter使用 获取所有列,使用( )team进行比较,并通过 获取每行至少一个:eq==Trueany

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
于 2018-12-14T06:04:59.083 回答