Следующие результаты в последних 2 столбцах агрегированы в столбец массива:
df1 = df.withColumn('lst', f.concat(df['b'], f.lit(','), df['c']).alias('lst'))\
.groupBy('a')\
.agg( f.collect_list('lst').alias('b_list'))
Теперь присоедините элементы массива:
#Simplistic udf to joing array:
def join_array(col):
return ','.join(col)
join = f.udf(join_array)
df1.select('a', join(df1['b_list']).alias('b_list'))\
.show()
Печать:
+---+-------+
| a| b_list|
+---+-------+
| 5|2,1,4,3|
| 2|4,2,3,7|
+---+-------+