首页 > 解决方案 > 创建数组列但出现错误:TypeError: 'list' object is not callable in PySpark

问题描述

我想从PySpark中的现有列创建一个数组列

--------------------------
col0 | col1 | col2 | col3
--------------------------
1    |a     |b     |c
--------------------------
2    |d     |e     |f
--------------------------

我想要这样

-------------
col0 | col1 
-------------
1    |[a,b,c]
-------------
2    |[d,e,f]
--------------

我正在尝试这样的 array() 函数

>>> new = df.select("col0",array("col1","col2","col3").alias("col1"))

但收到此错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable

请如果有人对此有解决方案..

标签: pythonpysparkapache-spark-sql

解决方案


您需要withColumn()在创建新列时首先使用,发布您可以根据您的选择使用select() 的列select

df = df.withColumn("col0", array("col1","col2","col3"))
df = df.select("col0")

并且您收到此错误,因为您正在使用.alias()函数并且编译器正在抱怨


推荐阅读