如果 pyspark 数据帧的行基于两列的值位于另一个数据帧中,如何删除它们?

Posted

技术标签:

【中文标题】如果 pyspark 数据帧的行基于两列的值位于另一个数据帧中,如何删除它们?【英文标题】:How to drop rows of a pyspark dataframe if they're in another dataframe based on the values from two columns? 【发布时间】:2020-07-22 22:38:27 【问题描述】:

我有两个数据框,一个包含用户和项目列,另一个包含所有用户项目对及其分数。 user| itemuser | item | item2 | rating2 | score

我想从第二个表中删除用户和项目出现在第一个数据框中的所有行。我不能使用减法,因为它们的列数不同?

这可以通过反连接来完成吗?

【问题讨论】:

【参考方案1】:
df2.join(df1, on=['user', 'item'], how="left_anti")

【讨论】:

答案看起来不错 +1。如果其中一个 DataFrame 小到可以广播,则应该进行广播连接:big_df.join(broadcast(small_df)...。这样会快很多。

以上是关于如果 pyspark 数据帧的行基于两列的值位于另一个数据帧中,如何删除它们?的主要内容,如果未能解决你的问题,请参考以下文章

在pyspark中添加数据类型为字符串格式的两列的值

我们如何组合来自相同 data_type 的数据帧的两列的值并获取每个元素的计数?

PYSPARK:如何在 pyspark 数据框中找到两列的余弦相似度?

randomSplit pyspark 更改数据帧的值

Pyspark 基于另一个类似的数据框添加或删除数据框中的行

比较两列的值小于或等于并在mysql中获取选定的行?