这个问题已经有了答案:
假设我有两个数据帧,
**A** **B** | a | b | c | |a| | 1 | 2 | 3 | |1|
我想根据数据集B中A列的值筛选数据框A的内容。
WHERE NOT (A.a in (select a from B)
我怎样才能做到这一点?
若要将左表中的所有行保留在右表中有匹配项的位置,可以使用 leftsemi 加入。在这种情况下,只有在 不 在正确的表中匹配,在这种情况下,可以使用 leftanti 加入:
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()
数据框
+---+---+---+ | a| b| c| +---+---+---+ | 1| 2| 3| | 2| 3| 4| +---+---+---+
DF2型
+---+---+ | a| b| +---+---+ | 1| 2| +---+---+
结果
+---+---+---+ | a| b| c| +---+---+---+ | 2| 3| 4| +---+---+---+
希望这有帮助!