我有一个带有以下架构的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"))
虽然这可以完成工作,但是花费时间并且看起来也效率低下。有没有更好的选择。
答案 0 :(得分:8)
您可以直接在列上调用concat_ws
,如下所示:
df1.withColumn('col2', concat_ws(',', 'col2'))