Pyspark如何explode list列并生成对应元素的位置rank列
PySpark 实现代码
最优方案直接使用PySpark内置的posexplode函数,该函数可以在拆分数组列为多行的同时返回元素对应的原始0基索引,全程不需要shuffle操作,性能最优。
步骤1:导入依赖函数
from pyspark.sql import functions as F
步骤2:核心处理逻辑
# 替换df为你自己的原始DataFrame变量名 result_df = df.select( "id", F.posexplode("list").alias("origin_index", "listitem") ).withColumn("rank", F.col("origin_index") + 1) \ .drop("origin_index") # 不需要原始索引列可直接删除
执行以上代码即可得到你需要的输出结果。
内容的提问来源于stack exchange,提问作者eljiwo
相关产品推荐
相关产品推荐

