使用循环查询cols

2024-09-30 04:38:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下资料:

    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))

Tags: runindfforfrcountryscore资料
1条回答
网友
1楼 · 发布于 2024-09-30 04:38:20

使用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

相关问题 更多 >

    热门问题