我有一个具有以下架构的 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'))
关于python - 如何在 PySpark/Python 中有效地将数组转换为字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47105138/