找出兩個資料框之間的差異
使用pandas 資料框時,通常會遇到需要比較兩個資料框的情況並提取它們之間的差異。例如,您可能有一個基礎資料框 (df1) 和一個子集資料框 (df2),並且想要建立一個新資料框 (df3),其中包含 df1 中 df2 中不存在的所有行和列。
使用 drop_duplicates
實現此目的最直接的方法是使用drop_duplicates 函數。透過連接 df1 和 df2,然後對連接的資料框套用 drop_duplicates,您可以消除重複行並獲得僅包含唯一行的資料框。
pd.concat([df1, df2]).drop_duplicates(keep=False)
處理重複
但是,如果 df1 或 df2 本身包含重複行,則drop_duplicates 方法可能會導致錯誤的輸出。為了解決這個問題,您可以使用保留原始重複項的替代方法:
方法1:將isin 與元組結合使用
此方法涉及將資料幀的每一行轉換為一個元組並檢查兩個資料幀中是否都存在該元組。與另一個資料框中的任何元組都不匹配的行將包含在差異資料框中。
df1[~df1.apply(tuple, 1).isin(df2.apply(tuple, 1))]
方法 2:與指標合併
另一個此方法涉及使用指示符列合併 df1 和 df2。透過在合併中指定 how='left',df1 中在 df2 中沒有對應行的行將被指派 left_only 的 _merge 列值。然後您可以根據該指標列過濾掉行以獲得差異資料框。
df1.merge(df2, indicator=True, how='left').loc[lambda x: x['_merge'] != 'both']
以上是如何有效地找到兩個 Pandas DataFrame 之間的差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!