簡體   English   中英

Python - 查找兩個數據幀之間的行差異

[英]Python - Finding Row Discrepancies Between Two Dataframes

我有兩個具有相同列數的數據幀,d1和d2。

注意:d1和d2可能具有不同的行數。 注意:d1和d2可能不會被索引到每個數據幀中的同一行。

檢查兩個數據幀是否具有相同數據的最佳方法是什么?

我目前的解決方案包括將兩個數據幀附加在一起並刪除任何匹配的行。

d_combined = d1.append(d2)
d_discrepancy = d_combined.drop_duplicates(keep=False)
print(d_discrepancy)

我是python和pandas庫的新手。 因為我將使用具有數百萬行和8-10列的數據幀,是否有更快速,更有效的方法來檢查差異? 是否還可以顯示產生的差異行來自哪個初始數據幀?

設定

d1 = pd.DataFrame(dict(A=[1, 2, 3, 4]))
d2 = pd.DataFrame(dict(A=[2, 3, 4, 5]))

選項1
使用pd.merge 我將包含參數indicator=True以顯示數據的來源。

d1.merge(d2, how='outer', indicator=True)

   A      _merge
0  1   left_only
1  2        both
2  3        both
3  4        both
4  5  right_only

如果他們有相同的數據,我希望_mergeboth適用於所有內容。 所以我們可以查看

d1.merge(d2, how='outer', indicator=True)._merge.eq('both').all()

False

在這種情況下,它返回False因此不是相同的數據。


選項2
使用drop_duplicates
您需要確保首先從初始數據幀中刪除重復項。

d1.drop_duplicates().append(d2.drop_duplicates()) \
    .drop_duplicates(keep=False).empty

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM