Python 查询带有循环的cols

Python 查询带有循环的cols,python,pandas,loops,Python,Pandas,Loops,我有以下建议: country sport score 0 ita swim 15 1 fr run 25 2 ger golf 37 3 ita run 17 4 fr golf 58 5 fr run 35 我只对类别的某些元素感兴趣: ctr = ['ita','fr'] sprt= ['run','golf'] 我希望通过这样的方式来提取它们: df[

我有以下建议:

    country  sport  score
0   ita      swim   15 
1   fr       run    25
2   ger      golf   37
3   ita      run    17
4   fr       golf   58
5   fr       run    35
我只对类别的某些元素感兴趣:

ctr = ['ita','fr']
sprt= ['run','golf']
我希望通过这样的方式来提取它们:

df[(df['country']== x for x in ctr)&(df['sport']== x for x in sprt)]
但是,虽然它不抛出任何错误,但返回空

有什么建议吗? 我还尝试:

df[(df['country']== {x for x in ctr})&(df['sport']== {x for x in sprt})]
编辑:

之所以要使用循环,是因为我实际上对每个组合的3个最高分感兴趣,我希望能够达到:

df1 = pd.concat(df[(df['country']== x for x in ctr)&(df['sport']== x for x in sprt)].sort_values(by=['score'],ascending=False).head(3))
使用double检查成员资格:

df1 = df[(df['country'].isin(ctr))&(df['sport'].isin(sprt))]
print (df1)
  country sport  score
1      fr   run     25
3     ita   run     17
4      fr  golf     58
5      fr   run     35

df2 = df1.sort_values('score', ascending=False).groupby(['country','sport']).head(3)
print (df2)
  country sport  score
4      fr  golf     58
5      fr   run     35
1      fr   run     25
3     ita   run     17

嗨,耶兹雷尔,是的,对不起,请看我的编辑。。我对每种组合的前三名很感兴趣,所以我希望排序,head()和concat..@lorenzo-你能为样本添加更多数据并添加预期输出吗?请参阅我的编辑,是否更清晰?我感兴趣的是每种组合的前三名,而不仅仅是前三名。像往常一样,耶兹雷尔,你是对的。非常感谢你!在这种情况下,为什么head()显示每个df的头部,而不是分组df的前3个头部?@lorenzo-需要成对检查吗?样本数据的预期输出是什么?因为
isin
测试类似于
-ita或fr和run或golf