gpt4 book ai didi

pyspark - 将 int 列转换为列表类型 pyspark

转载 作者:行者123 更新时间:2023-12-05 01:41:40 26 4
gpt4 key购买 nike

我的 DataFrame 有一列 num_of_items。它是一个计数字段。现在,我想将它从 int 类型转换为列表类型。

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

from pyspark.sql.types import ArrayType
from array import array

def to_array(x):
return [x]

df=df.withColumn("num_of_items", monotonically_increasing_id())

df

col_1    | num_of_items
A | 1
B | 2

预期输出

col_1    | num_of_items
A | [23]
B | [43]

最佳答案

I tried using array(col)

使用 pyspark.sql.functions.array 似乎对我有用。

from pyspark.sql.functions import array
df.withColumn("num_of_items", array("num_of_items")).show()
#+-----+------------+
#|col_1|num_of_items|
#+-----+------------+
#| A| [1]|
#| B| [2]|
#+-----+------------+

and even creating a function to return a list by taking int value as input.

如果你想使用你创建的函数,你必须使它成为一个 udf 并指定返回类型:

from pyspark.sql.types import ArrayType, IntegerType
from pyspark.sql.functions import udf, col

to_array_udf = udf(to_array, ArrayType(IntegerType()))
df.withColumn("num_of_items", to_array_udf(col("num_of_items"))).show()
#+-----+------------+
#|col_1|num_of_items|
#+-----+------------+
#| A| [1]|
#| B| [2]|
#+-----+------------+

但最好尽可能避免使用 udf:参见 Spark functions vs UDF performance?

关于pyspark - 将 int 列转换为列表类型 pyspark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54082626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com