向pyspark数据帧添加历史路径功能

向pyspark数据帧添加历史路径功能,pyspark,feature-engineering,Pyspark,Feature Engineering,我的原始数据框中有“Event”列,我想添加其他2列。有人能帮我吗?希望这有帮助 从pyspark.sql.functions导入滞后、col、单调递增的id、collect\u list、concat\u ws 从pyspark.sql导入窗口 #样本数据 df=sc.parallelize([[0]、[0]、[1]、[0]]).toDF([“事件”]) #将行索引添加到数据帧 df=df.withColumn(“row_idx”,单调递增的_id()) w=Window.orderBy(“r

我的原始数据框中有“Event”列,我想添加其他2列。有人能帮我吗?

希望这有帮助

从pyspark.sql.functions导入滞后、col、单调递增的id、collect\u list、concat\u ws
从pyspark.sql导入窗口
#样本数据
df=sc.parallelize([[0]、[0]、[1]、[0]]).toDF([“事件”])
#将行索引添加到数据帧
df=df.withColumn(“row_idx”,单调递增的_id())
w=Window.orderBy(“row_idx”)
#在数据框中添加“Event\u Lag”列
df=df.withColumn(“事件滞后”,滞后(col('Event')。cast('string'))。超过(w))
df=df.fillna({'Event_Lag':'N'})
#最后,将“Hist_Event”列添加到数据帧中,并删除行索引列(即“row_idx”)以获得最终结果
df=df.withColumn(“历史事件”,col(“事件滞后”),col.over(w))\
withColumn(“历史事件”,concat\u ws(“,“历史事件”))\
删除(“行_idx”)
df.show()
样本输入:

+-----+
|Event|
+-----+
|    0|
|    0|
|    1|
|    0|
+-----+
输出为:

+-----+---------+----------+
|Event|Event_Lag|Hist_Event|
+-----+---------+----------+
|    0|        N|         N|
|    0|        0|        N0|
|    1|        0|       N00|
|    0|        1|      N001|
+-----+---------+----------+