从pyspark dataframe中的数组列中删除结构

从pyspark dataframe中的数组列中删除结构,pyspark,pyspark-sql,pyspark-dataframes,Pyspark,Pyspark Sql,Pyspark Dataframes,我想从数据帧(pyspark)中的数组数组(在数组列中)中删除一个数组 这是我想要的结果 +---+-----------------------+ |id |collected | +---+-----------------------+ |1 |[[A, 2], [B, 3]] | |2 |[[C, 4], [D, 1]] | +---+-----------------------+ 我尝试使用F.array\u remove(…,

我想从数据帧(pyspark)中的数组数组(在数组列中)中删除一个数组

这是我想要的结果

+---+-----------------------+
|id |collected              |
+---+-----------------------+
|1  |[[A, 2], [B, 3]]       |
|2  |[[C, 4], [D, 1]]       |
+---+-----------------------+

我尝试使用
F.array\u remove(…,[,0])
,但出现了一个错误。不太确定如何定义要删除的元素。谢谢

对于Spark 2.4+,您可以使用:

给出:

+---+----------------+
|id |collected       |
+---+----------------+
|1  |[[A, 2], [B, 3]]|
|2  |[[C, 4], [D, 1]]|
+---+----------------+

编辑示例以鼓励不使用位置逻辑的解决方案。谢谢,就是这样。
grouped.withColumn("collected",
                   array_except(col("collected"),
                                array(struct(lit(None).cast("string").alias("value"), lit(0).alias("amount")))
                                )
                   ) \
       .show()
+---+----------------+
|id |collected       |
+---+----------------+
|1  |[[A, 2], [B, 3]]|
|2  |[[C, 4], [D, 1]]|
+---+----------------+