Pyspark如何基于ncf和date两列删除DataFrame重复数据
PySpark按指定列删除重复行解决方案
你可以根据实际需求选择对应实现方式:
场景1:每个(ncf, date)组合保留1行
如果重复的ncf+date组合仅需要保留任意1行(默认保留首次出现的行),直接使用内置dropDuplicates方法即可:
# 指定按ncf和date两列判断重复 result_df = df.dropDuplicates(subset=["ncf", "date"])
场景2:完全删除所有出现重复的(ncf, date)对应行
如果需要把出现过至少2次的ncf+date组合对应的所有行全部删除,和你给出的预期结果完全匹配,使用窗口函数实现:
from pyspark.sql import functions as F from pyspark.sql.window import Window # 按ncf、date分组统计每组出现次数,过滤仅保留次数为1的行 result_df = df.withColumn("group_cnt", F.count("*").over(Window.partitionBy("ncf", "date"))) \ .filter(F.col("group_cnt") == 1) \ .drop("group_cnt")
运行上述代码后得到的result_df就和你贴出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者daniel____
相关产品推荐
相关产品推荐

