Dataframe 如何将列表添加为新列?

Dataframe 如何将列表添加为新列?,dataframe,apache-spark,pyspark,Dataframe,Apache Spark,Pyspark,我有一个pyspark数据框,我想将一个列表作为新列附加到它。在pandas中很容易:df['new_column']=mylist。我做了以下工作: df.withColumn(“规范化”,sparlist).show(false) 但这是一个错误: AssertionError:col应为列 mylist=['fg'、'af'、'ab'、'df'、'cd'] | id| mylist| +---+---------+ | 0| fg | | 1| af |

我有一个pyspark数据框,我想将一个列表作为新列附加到它。在pandas中很容易:
df['new_column']=mylist
。我做了以下工作:

df.withColumn(“规范化”,sparlist).show(false)

但这是一个错误:

AssertionError:col应为列

mylist=['fg'、'af'、'ab'、'df'、'cd']

| id|     mylist|
+---+---------+
|  0| fg       |
|  1| af       |
|  2| ab       |
|  3| df       |
|  4| cd       |
+---+---------

您可以使用
F.array
从列表中创建数组:

import pyspark.sql.functions as F

mylist = [0,1,2]
df2 = df.withColumn('list', F.array(*[F.lit(i) for i in mylist]))

df2.show()
+---+---------+
| id|     list|
+---+---------+
|  0|[0, 1, 2]|
|  1|[0, 1, 2]|
|  2|[0, 1, 2]|
|  3|[0, 1, 2]|
|  4|[0, 1, 2]|
+---+---------+
对于您修改的问题:

mylist = ['fg','af','ab','df','cd']
df2 = df.withColumn('list', F.array(*[F.lit(i) for i in mylist])[F.col('id')])

df2.show()
+---+----+
| id|list|
+---+----+
|  0|  fg|
|  1|  af|
|  2|  ab|
|  3|  df|
|  4|  cd|
+---+----+

我希望列表的每个元素都在每一行中。我将添加一个示例,请检查it@elham请参阅编辑后的答案