Python 根据另一列的值筛选Dataframe列
假设我有两个数据帧Python 根据另一列的值筛选Dataframe列,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,假设我有两个数据帧 **A** **B** | a | b | c | |a| | 1 | 2 | 3 | |1| 我想根据Dataset B中A列中的值过滤dataframe A的内容 WHERE NOT (A.a in (select a from B) 如何实现这一点?要保留左表中右侧有匹配项的所有行,可以使用leftsemijoin。在这种情况下,仅当右表中存在匹配项时才希望保留
**A** **B**
| a | b | c | |a|
| 1 | 2 | 3 | |1|
我想根据Dataset B中A列中的值过滤dataframe A的内容
WHERE NOT (A.a in (select a from B)
如何实现这一点?要保留左表中右侧有匹配项的所有行,可以使用
leftsemi
join。在这种情况下,仅当右表中存在匹配项时才希望保留值,在这种情况下,可以使用leftanti
join:
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
df2
结果
+---+---+---+
| a| b| c|
+---+---+---+
| 2| 3| 4|
+---+---+---+
希望这有帮助 对不起,我找不到那个被愚弄的目标。
+---+---+
| a| b|
+---+---+
| 1| 2|
+---+---+
+---+---+---+
| a| b| c|
+---+---+---+
| 2| 3| 4|
+---+---+---+