如何使用withColumn从包含列表的列中生成列

时间:2019-06-24 15:19:18

标签: python apache-spark pyspark apache-spark-sql

我有以下df a,其中ListCol是包含列表的列。

+----+---------+
| Id | ListCol |
+----+---------+
|  1 | [a, b]  |
|  2 | [a]     |
|  3 | [a,b,c] |
+----+---------+

我如何对df a的每一行进行操作,以便根据列ListCol的列表内的值创建新列?

即,创建一个新的df b,如下所示:(其中每个列表中的每个元素都附加了1)

+----+---------+
| Id | ListCol |
+----+---------+
|  1 | [a1, b1]  |
|  2 | [a1]     |
|  3 | [a1,b1,c1] |
+----+---------+

到目前为止,我已经编写了与withColumn一起使用的UDF:

def fun(array):
    mylist = []
    for el in array:
        mylist.append(el + '1')
    return mylist

my_udf = udf(fun, SomeType())
b = a.withColumn('ListCol', udf(a.ListCol))

但是我在for el in array:遇到了以下错误

  

TypeError:列不可迭代

有什么想法吗?

0 个答案:

没有答案