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