Python 如何将ID添加到pyspark数据帧行中,该行仅在满足特定条件时才会增加?

Python 如何将ID添加到pyspark数据帧行中,该行仅在满足特定条件时才会增加?,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我有一个pyspark数据帧,我想在其中添加一个Id列,该列只有在满足条件时才会增加。 示例: 在col1上的窗口上,如果col2值更改,则需要将Id增加1。 输入: 输出: +----+----+----+ |col1|col2| ID| +----+----+----+ | 1| A| 1| | 1| A| 1| | 1| B| 2| | 1| C| 3| | 2| A| 1| | 2| B| 2| | 2

我有一个pyspark数据帧,我想在其中添加一个Id列,该列只有在满足条件时才会增加。 示例:
在col1上的窗口上,如果col2值更改,则需要将Id增加1。
输入:

输出:

+----+----+----+
|col1|col2|  ID|
+----+----+----+
|   1|   A|   1|
|   1|   A|   1|    
|   1|   B|   2|
|   1|   C|   3|
|   2|   A|   1|
|   2|   B|   2|
|   2|   B|   2|
|   2|   B|   2|
|   2|   C|   3|
|   2|   C|   3|
+----+----+----+

谢谢:)

您正在寻找的是
densite\u-rank
函数(pyspark-doc)。 假设数据帧变量为
df
,则可以执行以下操作:

import pyspark.sql.functions as F
from pyspark.sql.window import Window
...
df.withColumn('ID', F.dense_rank().over(Window.partitionBy('col1').orderBy('col2')))
import pyspark.sql.functions as F
from pyspark.sql.window import Window
...
df.withColumn('ID', F.dense_rank().over(Window.partitionBy('col1').orderBy('col2')))