如何使用 group by 子句对 pyspark 中的列进行排名
how to rank the column in pyspark with group by clause
我的数据框如下所示:
A B C
---------------
A1 B1 C1
A1 B1 C2
A1 B1 C3
A2 B1 C1
A2 B1 C2
A2 B1 C3
A3 B2 C1
A3 B2 C2
A3 B2 C3
我如何根据 A、B 列进行排名?预期输出:
A B C rank
-----------------------
A1 B1 C1 1
A1 B1 C2 2
A1 B1 C3 3
A2 B1 C1 1
A2 B1 C2 2
A2 B1 C3 3
A3 B2 C1 1
A3 B2 C2 2
A3 B2 C3 3
我想对 A、B 列进行分组,并根据 C 列值的变化给出排名?
您可以尝试以下操作吗?
df.withColumn("rank", F.rank().over(Window.partitionBy("A", "B").orderBy("C")))
我的数据框如下所示:
A B C
---------------
A1 B1 C1
A1 B1 C2
A1 B1 C3
A2 B1 C1
A2 B1 C2
A2 B1 C3
A3 B2 C1
A3 B2 C2
A3 B2 C3
我如何根据 A、B 列进行排名?预期输出:
A B C rank
-----------------------
A1 B1 C1 1
A1 B1 C2 2
A1 B1 C3 3
A2 B1 C1 1
A2 B1 C2 2
A2 B1 C3 3
A3 B2 C1 1
A3 B2 C2 2
A3 B2 C3 3
我想对 A、B 列进行分组,并根据 C 列值的变化给出排名?
您可以尝试以下操作吗?
df.withColumn("rank", F.rank().over(Window.partitionBy("A", "B").orderBy("C")))