1

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

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

4

3 回答 3

1

三个简单的步骤:

从 pyspark.sql.window 导入窗口

从 pyspark.sql.functions 导入 monotonically_increasing_id,row_number

df =df.withColumn("row_idx",row_number().over(Window.orderBy(monotonically_increasing_id())))

于 2020-08-20T11:54:34.970 回答
1

您可以使用范围来执行此操作

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 行

于 2019-08-22T03:55:34.230 回答
0

This worked for me. This creates sequential value into the column.

seed = 23
df.withColumn('label', seed+dense_rank().over(Window.orderBy('column')))
于 2021-06-21T07:02:51.227 回答