Skip to main content
 首页 » 编程设计

python之如何在 PySpark/Python 中有效地将数组转换为字符串

2025年05月04日13www_RR

我有一个具有以下架构的 df:

root 
 |-- col1: string (nullable = true) 
 |-- col2: array (nullable = true) 
 |    |-- element: string (containsNull = true) 

其中一列,col2 是一个数组[1#b, 2#b, 3#c]。我想将其转换为字符串格式 1#b,2#b,3#c。

我目前正在通过以下代码片段执行此操作

df2 = (df1.select("*", explode(col2)).drop('col2')) 
df2.groupBy("col1").agg(concat_ws(",", collect_list('col')).alias("col2")) 

虽然这可以完成工作,但它需要时间而且效率似乎也很低。

有更好的选择吗?

请您参考如下方法:

您可以直接在列上调用 concat_ws,如下所示:

df1.withColumn('col2', concat_ws(',', 'col2'))