如何有效地找到 DataFrame1 中 DataFrame2 中沒有的唯一行?

Susan Sarandon
發布: 2024-11-21 07:28:10
原創
633 人瀏覽過

How Can I Efficiently Find the Unique Rows in DataFrame1 That Are Not in DataFrame2?

找出兩個 DataFrame 之間的差異

在資料分析中,辨識資料集之間的差異至關重要。假設您有兩個資料幀 df1 和 df2,其中 df2 是 df1 的子集。要有效檢索 df1 中存在但 df2 中不存在的唯一行和列,您可以利用集合差異的概念。

方法:使用pd.concatdrop_duplicates**

主要方法包括使用pd.concat 組合兩個資料幀,然後消除重複使用drop_duplicates 的行或列。透過設定 keep=False,可以確保僅保留 df1 中單獨存在的行或列。

df3 = pd.concat([df1, df2]).drop_duplicates(keep=False)
登入後複製

警告:處理重複

但是,這方法假設兩個資料幀本身不包含重複值。如果他們這樣做,結果可能不準確。為了解決這個問題,我們可以採用以下替代方法:

方法1:使用isin 和Tuple

此方法涉及將每一行轉換為使用df.apply(tuple, 1) 的元組,然後使用檢查元組是否存在於df2 中df.apply(元組,1).isin(df2.apply(元組,1))。產生的資料幀將包含 df1 中不在 df2 中的唯一行。

df1[~df1.apply(tuple, 1).isin(df2.apply(tuple, 1))]
登入後複製

方法2:與指標合併

另一種方法是將df1 與df2 使用帶有指示符的pd.merge 來識別僅存在於df1 中的行。透過使用 lambda 函數,我們可以過濾掉 '_merge' 列不等於 'both' 的行。

df1.merge(df2, indicator=True, how='left').loc[lambda x: x['_merge']!='both']
登入後複製

結論

利用這些技術,您可以有效地找到兩個數據幀之間的差異,並深入了解每個數據幀中存在的獨特數據點。

以上是如何有效地找到 DataFrame1 中 DataFrame2 中沒有的唯一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板