首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果组中的任何行的值都为0,我将如何使用ANY条件进行筛选?

如果组中的任何行的值都为0,我将如何使用ANY条件进行筛选?
EN

Stack Overflow用户
提问于 2020-11-09 00:48:54
回答 1查看 32关注 0票数 0

假设我有这个数据帧。

代码语言:javascript
复制
var df = Seq(("Steve",1),("Steve",0),("Michael",3),("Michael",2),("Katherine",4),("Katherine",0),("Devin",0),("Devin",0)).toDF("name","score")

我希望返回唯一的名称,其中它们的得分都不等于零。因此,在本例中,唯一返回的名字将是Michael,因为他的两个分数都大于零。

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-09 00:56:26

如果要将条件应用于多个行,则需要使用groupByWindow函数

在您的例子中,您可以按列" name“分组,聚合每个名称的分数列表,然后筛选出所有分数列表包含0的记录。你的代码应该是:

代码语言:javascript
复制
import org.apache.spark.sql.functions.{col, collect_set, array_contains, not}

df.groupBy("name")
  .agg(collect_set(col("score")).as("all_scores"))
  .filter(not(array_contains(col("all_scores"), 0)))
  .select("name")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64740656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档