首頁 > 後端開發 > Python教學 > 比較兩個 DataFrame 時如何有效辨識 Pandas DataFrame 中的唯一行?

比較兩個 DataFrame 時如何有效辨識 Pandas DataFrame 中的唯一行?

Barbara Streisand
發布: 2024-12-15 21:07:13
原創
282 人瀏覽過

How to Efficiently Identify Unique Rows in Pandas DataFrames When Comparing Two DataFrames?

取得Pandas DataFrame 中的唯一行

給定兩個Pandas 資料幀,通常需要識別僅存在於其中一個資料幀中的行。這可以透過利用合併操作來有效地實現。

例如,考慮以下資料幀:

df1 = pd.DataFrame(data={'col1': [1, 2, 3, 4, 5, 3], 'col2': [10, 11, 12, 13, 14, 10]})
df2 = pd.DataFrame(data={'col1': [1, 2, 3], 'col2': [10, 11, 12]})
登入後複製

要從 df1 取得 df2 中不存在的行,我們可以執行df1 和 df2 之間的左連接。為了確保 df1 中的每一行與 df2 中的一行完全匹配,我們需要先從 df2 中刪除重複的行。我們可以使用 drop_duplicates() 函數來做到這一點。

df_all = df1.merge(df2.drop_duplicates(), on=['col1', 'col2'], how='left', indicator=True)
登入後複製

產生的df_all 資料幀將有一個名為_merge 的附加列,指示每一行是否來自df1 和df2(「兩者」),來自僅df1('left_only'),或僅來自df2 ('right_only').

   col1  col2     _merge
0     1    10       both
1     2    11       both
2     3    12       both
3     4    13  left_only
4     5    14  left_only
5     3    10  left_only
登入後複製

要從df1 提取df2中不存在的行,我們只需選擇_merge 等於'left_only' 的行即可:

rows_not_in_df2 = df_all[df_all['_merge'] == 'left_only']
登入後複製
   col1  col2
0     4    13
1     5    14
2     3    10
登入後複製

避免錯誤方法

重要的是要避免無法將行視為一個整體的錯誤解決方案。一些解決方案僅檢查一行中的每個單獨值是否存在於另一個資料框中,這可能會導致不正確的結果。

例如,如果我們向df1 增加了另一行資料[3, 10],其中也存在於df2 中,不正確的方法仍會將其識別為不存在於df2 中,因為它在兩列中具有不同的值。但是,我們的方法將正確地將其識別為不存在,因為它已經在 df2 中,並且兩列的值相同。

以上是比較兩個 DataFrame 時如何有效辨識 Pandas DataFrame 中的唯一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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