Dataframe 如何将列表添加为新列?
我有一个pyspark数据框,我想将一个列表作为新列附加到它。在pandas中很容易: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 |
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请参阅编辑后的答案