我想找到 df1 中不包含和id來自 df2 的所有行。在熊貓中,我可以通過以下代碼做到這一點
df1.merge(df2, on='id', how = 'outer' ,indicator=True).loc[lambda x : x['_merge']=='left_only']
我怎么能在pyspark中做到這一點?
uj5u.com熱心網友回復:
使用left_anti連接
df1
df1 = spark.createDataFrame([
(1, 'a'),
(1, 'b'),
(1, 'c'),
(2, 'd'),
(2, 'e'),
(3, 'f'),
], ['id', 'col'])
--- ---
| id|col|
--- ---
| 1| a|
| 1| b|
| 1| c|
| 2| d|
| 2| e|
| 3| f|
--- ---
df2
df2 = spark.createDataFrame([
(1, 'a'),
(1, 'b'),
(1, 'c'),
], ['id', 'col'])
--- ---
| id|col|
--- ---
| 1| a|
| 1| b|
| 1| c|
--- ---
left_anti加入
df1.join(df2, on=['id'], how='left_anti').show()
--- ---
| id|col|
--- ---
| 2| d|
| 2| e|
| 3| f|
--- ---
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460380.html
上一篇:使用連接僅對第一個表的值求和一次
