簡體   English   中英

編輯:Pyspark:基於另一個數據框刪除行,並在許多列上有條件

[英]EDIT: Pyspark: drop rows based on another dataframe with conditions on many columns

我有兩個數據框 df1 和 df2。 我想根據 df2 列值過濾或刪除 df1 上的行

df2,我必須檢查客戶名稱、產品、年份、數量和金額,然后如果 df1 的所有值都相同,我必須刪除。 (即)如果客戶名稱 = Gopi,產品 = 球,年份 = 2020,數量 = 0 且數量 <= 0,則下降。

請告訴我如何實現,謝謝。

df1:

customername     product      year    qty     amount
Gopi             ball         2020    0       -100
Hana             ball         2020    2        200
Gopi             toy          2019    10       1000
Mesh             toy          2020    2        200
Tiby             ball         2017    1        100
Mona             pen          2020    1         70
Hana             ball         2019    2        200
Mona             ball         2020    1         70
Mona             toy          2020    1         70
Tiby             toy          2020    1        100

df2:

customername     product      year    qty     amount
Gopi             ball         2020    0       -100
Mona             pen          2020    1         70

預期輸出:

customername     product      year    qty     amount
Hana             ball         2020    2        200
Gopi             toy          2019    10       1000
Mesh             toy          2020    2        200
Tiby             ball         2017    1        100
Hana             ball         2019    2        200
Mona             ball         2020    1         70
Mona             toy          2020    1         70
Tiby             toy          2020    1        100

我設法過濾如下。

final_df = df1.join(df2, ((df1.customername == df2.customername) & (df1.product == df2.product) & (df1.year == df2.year) & (df1.qty == df2.qty) & (df1.amount <= 0), how='left_anti'))

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM