[英]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
如果他們有相同的數據,我希望_merge
列both
適用於所有內容。 所以我們可以查看
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.