从pyspark dataframe中的数组列中删除结构
我想从数据帧(pyspark)中的数组数组(在数组列中)中删除一个数组 这是我想要的结果从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(…,
+---+-----------------------+
|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]]|
+---+----------------+