在Pyspark中使用随机固定值向现有数据帧添加列

在Pyspark中使用随机固定值向现有数据帧添加列,pyspark,Pyspark,我是Pyspark的新手,我正在尝试向现有数据帧添加一个新列。新列应该只包含4个固定值(例如1,2,3,4),我想为每行随机选取一个值 我如何才能做到这一点?Pyspark数据帧是不可变的,因此您必须返回一个新的数据帧(例如,您不能仅以使用Pandas数据帧的方式分配数据帧)。要执行所需操作,请使用udf: from pyspark.sql.functions import udf import numpy as np df = <original df> udf_randint

我是Pyspark的新手,我正在尝试向现有数据帧添加一个新列。新列应该只包含4个固定值(例如
1,2,3,4
),我想为每行随机选取一个值


我如何才能做到这一点?

Pyspark数据帧是不可变的,因此您必须返回一个新的数据帧(例如,您不能仅以使用Pandas数据帧的方式分配数据帧)。要执行所需操作,请使用
udf

from pyspark.sql.functions import udf
import numpy as np

df = <original df>

udf_randint = udf(np.random.randint(1, 4))
df_new = df.withColumn("random_num": udf_randint)
从pyspark.sql.functions导入udf
将numpy作为np导入
df=
udf_randint=udf(np.random.randint(1,4))
df_new=df.withColumn(“random_num”:udf_randint)

Ah,对不起,您需要拨打numpy列表中的
lit
。这就是当我试图在你面前毫无火花地回答问题时所发生的事情。我会编辑它。请问最后一个参数(大小)是什么?我在没有那个参数的情况下尝试过,它一直给我相同的值,而不是随机的。它一直都是3,大小直接告诉numpy你想要多少个随机值。所以如果你不使用它,默认情况下它只是一个随机整数。如果将其设置为
size=2
,则返回一个包含两个随机整数的数组,以此类推。但由于某种原因,当我设置它时,它会给我错误。这是错误消息。AttributeError:'numpy.ndarray'对象没有属性'\u get\u object\u id'听起来像是缺少一个右括号?