根据另一列的值过滤数据框列[重复]
Posted
技术标签:
【中文标题】根据另一列的值过滤数据框列[重复]【英文标题】:Filter A Dataframe Column based on the the values of another column [duplicate] 【发布时间】:2018-07-16 13:16:50 【问题描述】:假设我有两个数据框,
**A** **B**
| a | b | c | |a|
| 1 | 2 | 3 | |1|
我想根据数据集B的a列中的值过滤数据框A的内容。SQL中等效的where子句是这样的
WHERE NOT (A.a in (select a from B)
我怎样才能做到这一点?
【问题讨论】:
抱歉,我找不到那个欺骗目标。 【参考方案1】:要保留左侧表中右侧匹配的所有行,您可以使用leftsemi
连接。在这种情况下,您只想在右表中不匹配时保留值,在这种情况下,您可以使用leftanti
连接:
df = spark.createDataFrame([(1,2,3),(2,3,4)], ["a","b","c"])
df2 = spark.createDataFrame([(1,2)], ["a","b"])
df.join(df2,'a','leftanti').show()
df
+---+---+---+
| a| b| c|
+---+---+---+
| 1| 2| 3|
| 2| 3| 4|
+---+---+---+
df2
+---+---+
| a| b|
+---+---+
| 1| 2|
+---+---+
结果
+---+---+---+
| a| b| c|
+---+---+---+
| 2| 3| 4|
+---+---+---+
希望这会有所帮助!
【讨论】:
以上是关于根据另一列的值过滤数据框列[重复]的主要内容,如果未能解决你的问题,请参考以下文章