python - 使用循环查询 pandas 列

标签 python pandas loops

我有以下 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))

最佳答案

使用双 Series.isin检查成员(member)资格:

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

关于python - 使用循环查询 pandas 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55155926/

相关文章:

python - 分组并查找最常见的值

JavaScript 循环;获取当前变量

javascript - 循环遍历 json 对象并提取数据 - js

python - WebDriverException : Message: unknown error: Chrome failed to start: crashed error using ChromeDriver Chrome through Selenium Python on Amazon Linux

python - 从元组列表中为每个项目创建 np.arrays 的最快方法

python - 如何在 Pandas 中获取多个值

Python If elif else

python - 有没有办法让 tkinter 在打开时立即执行命令?

python - Pandas:在 DataFrame 中创建聚合列

python - 在 Python 中将 JSON 文件平铺到 Pandas Dataframe 中