首页 > 解决方案 > 识别 pyspark 中第一次出现的列值,然后根据它增加另一列

问题描述

当我在 pyspark 中遇到新的客户 ID 时,我试图增加一列 我的 pyspark 数据框(类型 - pyspark.sql.dataframe.DataFrame)有 2 列 Customer_id 101 101 102 103 103 103 每当新的 Customer_ID 标志值重置为1 并在遇到相同 id 时递增。我想要以下输出数据框
Customer_id Flag

101 1

101 2

102 1

103 1

103 2

103 3

标签: pyspark

解决方案


在列上使用window子句row_number()函数partitionBycustomer_id

from pyspark.sql.functions import *
from pyspark.sql import Window
w = Window.partitionBy("customer_id").orderBy(lit("1"))
df1=df.withColumn("Flag",row_number().over(w))
df1.show()
#+-----------+----+
#|customer_id|Flag|
#+-----------+----+
#|        101|   1|
#|        101|   2|
#|        102|   1|
#|        103|   1|
#|        103|   2|
#|        103|   3|
#+-----------+----+

推荐阅读