假设我想检查同一组的不同名称计数,并且我只想在该组中保留一个名称。
df.groupBy('job','age','gender').agg(countDistinct('name')).filter('count(DISTINCT name)>1').show()
job | age | gender | >count(DISTINCT名称( |
---|---|---|---|
工程师 | 22 | M |
您可以使用rank
窗口函数。
w = Window.partitionBy('job', 'age', 'gender').orderBy(desc('name'))
df = (df.withColumn('rnk', rank().over(w))
.filter(col('rnk') == 1))