【发布时间】:2020-06-18 14:47:07
【问题描述】:
我有一个 pyspark 数据框,其中包含 N 个包含整数的列。一些字段也可能为空。 例如:
+---+-----+-----+
| id| f_1 | f_2 |
+---+-----+-----+
| 1| null| null|
| 2|123 | null|
| 3|124 |127 |
+---+-----+-----+
我想要的是将所有以 f 为前缀的列组合成一个新列中的 pyspark 数组。例如:
+---+---------+
| id| combined|
+---+---------+
| 1| [] |
| 2|[123] |
| 3|[124,127]|
+---+---------+
我设法得到的更接近的是:
features_filtered = features.select(F.concat(* features.columns[1:]).alias('combined'))
它返回 null (我假设由于初始数据帧中的空值)。
从我搜索的内容来看,我想使用.coalesce() 或.fillna() 来处理/删除空值,但我没有设法让它工作。
我的主要要求是我希望新创建的列是 Array 类型,并且我不想枚举我需要连接的所有列名。
【问题讨论】: