Pyspark仅保留不同的内容(删除所有重复的内容)

时间:2018-07-13 10:07:12

标签: join pyspark duplicates

加入两个数据框(具有自己的ID)后,我有一些重复项(来自两个来源的重复ID) 我想删除在任何一个ID上都重复的所有行(这样就不会保留重复项)

我可以按第一个ID分组,对count == 1进行计数和过滤,然后对第二个ID重复该操作,然后将这些输出内部联接回到原始联接的数据帧-但这有点长。

是否有一个更简单的方法,例如dropDuplicates(),但是没有任何重复项被留下?

我看到熊猫可以选择不保留第一个重复的df.drop_duplicates(subset = ['A','C'],keep = False)

1 个答案:

答案 0 :(得分:0)

dropDuplicates()

根据官方documentation

  

返回删除了重复行的新DataFrame(仅可选)   考虑某些列。

要考虑所有列删除重复项:

df.dropDuplicate(subset=col_name)

如果要从某些列中删除重复项

df.dropDuplicates(subset=[col_name1, col_name2])

对于多列:

df =  df.agg(criteria_col).agg(sum(lit(1)).alias('freq'))

df = df.filter(col('freq')=1)

编辑评论

{{1}}