如何使用Pyspark维护数据框中行的顺序

lvjbypge  于 2024-01-06  发布在  Spark
关注(0)|答案(1)|浏览(176)

这个问题是来自超级用户的migrated,因为它可以在上个月的Stack Overflow.Migrated上回答。
我想在Pyspark中维护数据框中的行的顺序。有什么方法可以实现这个功能吗?这里我们有行ID,它会给每行给予编号。目前,下面的函数会导致数据框中的行重新排列。

  1. def createRowIdColumn( new_column, position, start_value):
  2. row_count = df.count()
  3. row_ids = spark.range(int(start_value), int(start_value) + row_count, 1).toDF(new_column)
  4. window = Window.orderBy(lit(1))
  5. df_row_ids = row_ids.withColumn("row_num", row_number().over(window) - 1)
  6. df_with_row_num = df.withColumn("row_num", row_number().over(window) - 1)
  7. if position == "Last Column":
  8. result = df_with_row_num.join(df_row_ids, on="row_num").drop("row_num")
  9. else:
  10. result = df_row_ids.join(df_with_row_num, on="row_num").drop("row_num")
  11. return result.orderBy(new_column)

字符串
如果我们能达到这个要求,请告诉我解决方案。

ev7lccsx

ev7lccsx1#

试试这个:

  1. from pyspark.sql import Window
  2. from pyspark.sql.functions import *
  3. df3=df3.withColumn('row',row_number().over(Window.partitionBy().orderBy(monotonically_increasing_id())))

字符串

相关问题