[英]How can I enumerate rows in groups with Spark/Python?
使用row_number
窗口函数:
from pyspark.sql.functions import row_number
from pyspark.sql import Window
w = Window.partitionBy("some_column").orderBy("some_other_column")
df.withColumn("rn", row_number().over(w))
您可以通过执行以下操作在rdd级别实现此目的:
rdd = sc.parallelize(['a', 'b', 'c'])
df = spark.createDataFrame(rdd.zipWithIndex())
df.show()
结果是: +---+---+ | _1| _2| +---+---+ | a| 0| | b| 1| | c| 2| +---+---+
+---+---+ | _1| _2| +---+---+ | a| 0| | b| 1| | c| 2| +---+---+
+---+---+ | _1| _2| +---+---+ | a| 0| | b| 1| | c| 2| +---+---+
如果你只需要唯一的ID,而不是真正的连续索引,你也可以使用更高效的zipWithUniqueId()
,因为在每个分区本地完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.