如何使用 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")))