Pyspark 在列为空时删除重复项

问题描述 投票:0回答:1

嗨,我有一个这样的数据集:

id 名字
1 A
2
2 B
3 C
3
4

如果 ID 重复,我想保留名称不为空的唯一值

在这个例子中我想得到这个表:

id 名字
1 A
2 B
3 C
4

我尝试使用 df.dropDuplicates() 函数,但我不知道如何指定在“名称”列中保留非空值

pyspark drop-duplicates
1个回答
0
投票

这是一种使用

window
distinct
函数消除重复项的方法。

df
.withColumn(
    "name", 
    expr("FIRST(name, TRUE) OVER(PARTITION BY id ORDER BY id)")
)
.distinct
.show(10, False)
+---+----+
|id |name|
+---+----+
|1  |A   |
|2  |B   |
|3  |C   |
|4  |NULL|
+---+----+
© www.soinside.com 2019 - 2024. All rights reserved.