找出兩個 DataFrame 之間的差異
在資料分析中,辨識資料集之間的差異至關重要。假設您有兩個資料幀 df1 和 df2,其中 df2 是 df1 的子集。要有效檢索 df1 中存在但 df2 中不存在的唯一行和列,您可以利用集合差異的概念。
方法:使用pd.concat 和drop_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中文網其他相關文章!