Pyspark-将列转换为列表

时间:2020-08-18 14:09:56

标签: python pyspark

Spark 3.0

我运行了代码df.select("Name").collect(),并在下面收到了此输出。我想将结果放在下面的列表中。我尝试在末尾添加[0],但这没用。

Row(Name='Andy')
Row(Name='Brandon')
Row(Name='Carl')

expected outcome = ['Andy','Brandon','Carl']

2 个答案:

答案 0 :(得分:2)

使用 collect_list ,然后通过访问索引并分配给变量来仅获取列表。

Example:

df.show()
#+-------+
#|   Name|
#+-------+
#|   Andy|
#|Brandon|
#|   Carl|
#+-------+

output=df.agg(collect_list(col("name"))).collect()[0][0]

output
#['Andy', 'Brandon', 'Carl']

另一种方法是使用列表理解

ss=df.select("Name").collect()

output=[i[0] for i in ss]

output
#['Andy', 'Brandon', 'Carl']

答案 1 :(得分:1)

您可以使用rdd。

df.select('Name').rdd.map(lambda x: x[0]).collect()

['Andy', 'Brandon', 'Carl']