Python 如何使用pyspark将列表数组作为新列添加到spark数据帧
我有一个列表数组Python 如何使用pyspark将列表数组作为新列添加到spark数据帧,python,arrays,apache-spark,pyspark,apache-spark-sql,Python,Arrays,Apache Spark,Pyspark,Apache Spark Sql,我有一个列表数组 array([1,2,3,4.....,50]) 我想将此列表中的每个元素作为新列添加到我当前的spark数据帧中。 像这样的 col1|col2|new_col ------------------- a |aa |1 ------------------- b |bb |2 ------------------- c |cc |3 ------------------- d |dd |4 ------------------- ... ... ..
array([1,2,3,4.....,50])
我想将此列表中的每个元素作为新列添加到我当前的spark数据帧中。
像这样的
col1|col2|new_col
-------------------
a |aa |1
-------------------
b |bb |2
-------------------
c |cc |3
-------------------
d |dd |4
-------------------
...
...
...
...
-------------------
z |zz |50
--------------------
withColumn似乎不适用于这种情况。使用
arrays\u-zip
函数,首先我们需要将现有数据转换为数组,然后使用arrays\u-zip
函数组合现有和新的数据列表。检查下面的代码
list_data = [1,2,3,4.....,50]
df \
.select(collect_list(struct(F.col("*"))).alias("data")) \
.withColumn("list",F.array([F.lit(i) for i in list_data])) \
.select(F.explode(F.arrays_zip(F.col("data"),F.col("list"))).alias("full_data")) \
.select(F.col("full_data.data.*"),F.col("full_data.list").alias("col3")) \
.show()
Spark Version>=
2.4.0
获取错误'numpy.int64'对象没有属性'\u get\u object\u id'
Spark Version??Spark 3.0.1位于withColumn语句的右侧。数组以某种方式导致了问题。使用了一个普通的列表,它工作正常,但列表数组不工作。好的..我已经从你的问题中复制了它并粘贴了。。现在更新的解决方案检查onceYea我知道列表正在运行。我不想要清单。我有一个列表数组。我想把它作为一个新专栏。即使我将列表数组转换为一个列表,然后使用该列表,它也会发出相同的错误。我尝试了一个像[1,2,3]这样的示例列表,然后它开始工作了。即使我正在使用list(数组)将数组([list])更改为列表,然后使用该列表。它发出了同样的错误。