将多个Spark DataFrame列转换为具有列表类型的单个列

时间:2019-04-17 08:35:05

标签: pyspark

我有一个如下的Pyspark数据框。

Time           A      B     C     D

06:37:14       2      3     4     5

我想将其转换为所有行都这样。我不想使用Pandas完成此任务。新的列类型应为列表类型。

Time             Features

06:37:14        [2,3,4,5]

如何使用Pyspark做到这一点?

1 个答案:

答案 0 :(得分:2)

正如我在评论中所描述的,当您具有固定数量的列(事先知道)时,您可以简单地将新列中的值与withColumn组合在一起,如果需要数组,则可以使用array

df1= sqlContext.createDataFrame([("06:37:14", '2', '3', '4', '5')], ['Time', 'A', 'B', 'C', 'D'])
df1.withColumn("Features", array("A","B","C","D")).drop("A","B","C","D").show(truncate=False)

输出:

+--------+------------+
|Time    |Features    |
+--------+------------+
|06:37:14|[2, 3, 4, 5]|
+--------+------------+