給定兩個具有相交行的Pandas 資料幀(df1 和df2),任務是隔離df1中不存在的行df2.
為了解決這個問題,我們可以從df1 到df2 執行左連接,確保消除df2 中的重複項,從而確保df1 的每一行僅與df2 的一行連接df2.
df_all = df1.merge(df2.drop_duplicates(), on=['col1', 'col2'], how='left', indicator=True)
此左連接建立一個額外的欄位_merge指示起源
為了過濾df1 獨有的行,我們應用布林條件:
df_filtered = df_all[df_all['_merge'] == 'left_only']
某些解在檢查每個值時出錯列獨立而不是考慮行的存在。例如,此解決方案:
(~df1.col1.isin(common.col1)) & (~df1.col2.isin(common.col2))
傳回不正確的結果,因為它無法捕獲值為 [3, 10] 的行,而該行通常不存在:
0 False 1 False 2 False 3 True 4 True 5 False dtype: bool
以上是如何辨識一個 Pandas DataFrame 中存在但另一個中不存在的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!