我有一个pyspark dataframe,我想向它添加一个Id列,它只在满足条件的情况下增加。示例:
在col1上的一个窗口上,如果col2值更改,则Id需要增加1。
输入:
+----+----+
|col1|col2|
+----+----+
| 1| A|
| 1| A|
| 1| B|
| 1| C|
| 2| A|
| 2| B|
| 2| B|
| 2| B|
| 2| C|
| 2| C|
+----+----+产出:
+----+----+----+
|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|
+----+----+----+谢谢:)
发布于 2019-12-10 18:45:09
您要寻找的是dense_rank函数(pyspark 这里)。假设您的dataframe变量是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')))https://stackoverflow.com/questions/59273398
复制相似问题