我有一个包含这些值的DataFrame:
Dept_id | name | salary
1 A 10
2 B 100
1 D 100
2 C 105
1 N 103
2 F 102
1 K 90
2 E 110
我想要这种形式的结果:
Dept_id | name | salary
1 N 103
1 D 100
1 K 90
2 E 110
2 C 105
2 F 102
在此先感谢:)。
答案 0 :(得分:3)
解决方案类似于pyspark中的Retrieve top n in each group of a DataFrame in pyspark
如果你在scala中做同样的事情,那么它应该如下所示
df.withColumn("rank", rank().over(Window.partitionBy("Dept_id").orderBy($"salary".desc)))
.filter($"rank" <= 3)
.drop("rank")
我希望答案很有帮助