我见过几个这样的问题,但没有一个让我满意的答案。这是一个示例 DataFrame:
+------+-----+----+ | id|value|type| +------+-----+----+ |283924| 1.5| 0| |283924| 1.5| 1| |982384| 3.0| 0| |982384| 3.0| 1| |892383| 2.0| 0| |892383| 2.5| 1| +------+-----+----+
我只想通过"id"和"value"列来识别重复项,然后删除所有实例。
"id"
"value"
在这种情况下:
输出结果为:
+------+-----+----+ | id|value|type| +------+-----+----+ |892383| 2.5| 1| |892383| 2.0| 0| +------+-----+----+
我试过了
df.dropDuplicates(subset = ['id', 'value'], keep = False)
但是 PySpark 中没有“保留”功能(因为它在 中pandas.DataFrame.drop_duplicates)。
pandas.DataFrame.drop_duplicates
我还能怎样做呢?
你可以使用窗口函数来实现
from pyspark.sql import Window, functions as F df.withColumn( 'fg', F.count("id").over(Window.partitionBy("id", "value")) ).where("fg = 1").drop("fg").show()