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

7

我有一个架构如下的 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"))

虽然这种方法可以完成工作,但它需要时间,而且似乎效率不高。

有更好的替代方案吗?

1个回答

21
你可以直接在列上调用concat_ws,像这样:
df1.withColumn('col2', concat_ws(',', 'col2'))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接