Pyspark - 将列转换为列表

use*_*271 5 python pyspark

火花3.0

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

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

expected outcome = ['Andy','Brandon','Carl']
Run Code Online (Sandbox Code Playgroud)

Lam*_*nus 6

你可以使用rdd。

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

['Andy', 'Brandon', 'Carl']
Run Code Online (Sandbox Code Playgroud)


Shu*_*Shu 5

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

Example:

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

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

output
#['Andy', 'Brandon', 'Carl']
Run Code Online (Sandbox Code Playgroud)

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

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

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

output
#['Andy', 'Brandon', 'Carl']
Run Code Online (Sandbox Code Playgroud)