将int列转换为列表类型pyspark

将int列转换为列表类型pyspark,pyspark,Pyspark,我的数据框有一列num\u项。这是一个计数字段。现在,我想把它从int类型转换成list类型 我尝试使用array(col),甚至创建了一个函数,以int值作为输入返回列表。没用 从pyspark.sql.types导入ArrayType 从数组导入数组 def到_阵列(x): 返回[x] df=df.withColumn(“num\u of\u items”,单调地增加\u id()) df col_1|num__项目 A | 1 B | 2 预期产量 col_1|num__项目 A |[

我的数据框有一列
num\u项
。这是一个计数字段。现在,我想把它从int类型转换成list类型

我尝试使用
array(col)
,甚至创建了一个函数,以int值作为输入返回列表。没用

从pyspark.sql.types导入ArrayType
从数组导入数组
def到_阵列(x):
返回[x]
df=df.withColumn(“num\u of\u items”,单调地增加\u id())
df

col_1|num__项目
A | 1
B | 2
预期产量

col_1|num__项目
A |[23]
B |[43]
我尝试使用数组(col)

使用
pyspark.sql.functions.array
似乎适合我

从pyspark.sql.functions导入数组
df.withColumn(“num_of_items”),array(“num_of_items”).show()
#+-----+------------+
#|第1列项目数量|
#+-----+------------+
#|A |[1]|
#|B |[2]|
#+-----+------------+
甚至创建一个函数来返回一个列表,将int值作为输入

如果要使用创建的函数,必须将其设置为
udf
,并指定返回类型:

从pyspark.sql.types导入ArrayType、IntegerType
从pyspark.sql.functions导入udf,col
to_array\u udf=udf(to_array,ArrayType(IntegerType()))
df.withColumn(“num_of_items”),to_array_udf(col(“num_of_items”)).show()
#+-----+------------+
#|第1列项目数量|
#+-----+------------+
#|A |[1]|
#|B |[2]|
#+-----+------------+
但最好尽可能避免使用
udf
s:请参阅