Python 如何在pyspark数据帧中创建序号列?

Python 如何在pyspark数据帧中创建序号列?,python,dataframe,pyspark,sequential-number,Python,Dataframe,Pyspark,Sequential Number,我想在pyspark数据帧中创建从指定数字开始的序列号列。例如,我想将列A添加到我的数据帧df,它将从数据帧的长度5开始,递增1,因此5,6,7,…,长度(df) 使用pyspark方法的一些简单解决方案?您可以使用range df_len = 100 freq =1 ref = spark.range( 5, df_len, freq ).toDF("id") ref.show(10) +---+ | id| +---+ | 5| | 6| | 7| | 8| | 9| |

我想在pyspark数据帧中创建从指定数字开始的序列号列。例如,我想将列A添加到我的数据帧df,它将从数据帧的长度5开始,递增1,因此567,…,长度(df


使用pyspark方法的一些简单解决方案?

您可以使用range

df_len = 100
freq =1
ref = spark.range(
    5, df_len, freq
).toDF("id")
ref.show(10)

+---+
| id|
+---+
|  5|
|  6|
|  7|
|  8|
|  9|
| 10|
| 11|
| 12|
| 13|
| 14|
+---+
仅显示前10行

三个简单步骤:

从pyspark.sql.window导入窗口

从pyspark.sql.functions导入单调递增的行号


df=df.withColumn(“row\u idx”,row\u number()。over(Window.orderBy(单调地增加\u id()))

这对我很有效。这将在列中创建顺序值

seed = 23
df.withColumn('label', seed+dense_rank().over(Window.orderBy('column')))

最简单的方法可能是
df=df.rdd.zipWithIndex().toDF(cols+[“index”])。withColumn(“index”,f.col(“index”)+5)
其中
cols=df.columns
f
指的是
pyspark.sql.functions
。但是你应该问问自己为什么要这样做,几乎可以肯定有更好的方法。数据帧本身是无序的,因此此操作效率不高。谢谢!最后,我想将最终结果添加到配置单元表中。我必须从这个表中获取max(id),并添加id从max(id)+1开始的新记录。我认为在配置单元中不可能获得这样的序列id列。Hive/Spark用于并行处理。尽管我的评论中的代码对您有效,您可能能够想出一种方法来实现您想要的结果,但这并不是spark或hive的一个好用例。我通过向我的df添加新列来处理它,如下所示:
max(id)+spark\u func.row\u number().over(Window.orderBy(我的df中的唯一字段)
问题是添加一个“新”列添加到现有数据帧