Scala 如果组中的任何行具有0值,我将如何使用ANY条件进行筛选?
假设我有这个数据帧Scala 如果组中的任何行具有0值,我将如何使用ANY条件进行筛选?,scala,apache-spark,Scala,Apache Spark,假设我有这个数据帧 var df = Seq(("Steve",1),("Steve",0),("Michael",3),("Michael",2),("Katherine",4),("Katherine",0),("Devin",0),("Devin",0)).toDF("name","score"
var df = Seq(("Steve",1),("Steve",0),("Michael",3),("Michael",2),("Katherine",4),("Katherine",0),("Devin",0),("Devin",0)).toDF("name","score")
我想返回唯一的名称,它们的分数都不等于零。所以在这种情况下,唯一返回的名字是迈克尔,因为他的两个分数都在零以上
非常感谢 如果要在多行上应用条件,则需要使用或函数 在您的情况下,您可以按“名称”列分组,汇总每个名称的分数列表,然后筛选出分数列表中包含0的所有记录。您的代码是:
import org.apache.spark.sql.functions.{col,collect\u set,array\u contains,not}
df.groupBy(“名称”)
.agg(收集集合(列(“分数”)).as(“所有分数”))
.filter(不是(数组包含(列(“所有分数”),0)))
.选择(“名称”)
如果要在多行上应用条件,则需要使用or函数之一
在您的情况下,您可以按“名称”列分组,汇总每个名称的分数列表,然后筛选出分数列表中包含0的所有记录。您的代码是:
import org.apache.spark.sql.functions.{col,collect\u set,array\u contains,not}
df.groupBy(“名称”)
.agg(收集集合(列(“分数”)).as(“所有分数”))
.filter(不是(数组包含(列(“所有分数”),0)))
.选择(“名称”)