Pyspark:将多个列合并到一个带有列名的字符串数组中

wqsoz72f  于 2022-11-28  发布在  Spark
关注(0)|答案(1)|浏览(150)

我尝试将多个列追加到一个列中,如下所示:
输入

A  | B  | C  | D  | E
aa | bb | cc | dd | null

输出量

A  | B  | C  | D  | E    | combine
aa | bb | cc | dd | null | [A: aa, B: bb, C: cc, D: dd, E: null]
flvlnr44

flvlnr441#

因为需要string数组,所以需要填充null并将字符串串串接起来:

df.fillna(
    'null'
).withColumn(
    'combine',
    func.array([func.concat_ws(': ', col, val) for col, val in [(func.lit(col), func.col(col)) for col in df.columns]])
).show(1, False)
+---+---+---+---+----+-------------------------------------+
|A  |B  |C  |D  |E   |combine                              |
+---+---+---+---+----+-------------------------------------+
|aa |bb |cc |dd |null|[A: aa, B: bb, C: cc, D: dd, E: null]|
+---+---+---+---+----+-------------------------------------+

相关问题