[英]How to find the set difference between two Pandas DataFrames
我想檢查兩個DataFrame列之間的區別。 我嘗試使用以下命令:
np.setdiff1d(train.columns, train_1.columns)
這將導致一個空數組:
array([], dtype=object)
但是,數據框中的列數是不同的:
len(train.columns), len(train_1.columns) = (51, 56)
這意味着兩個DataFrame明顯不同。
怎么了
結果是正確的,但是setdiff1d
與順序有關。 它將僅檢查第二個數組中未出現的第一個輸入數組中的元素。
如果您不關心哪個數據setxor1d
具有唯一列,則可以使用setxor1d
。 它將返回“僅在輸入數組之一(不是兩個)中的唯一值”,請參閱文檔 。
import numpy
colsA = ['a', 'b', 'c', 'd']
colsB = ['b','c']
c = numpy.setxor1d(colsA, colsB)
將返回一個包含“ a”和“ d”的數組。
如果要使用setdiff1d
,則需要兩種方式檢查差異:
//columns in train.columns that are not in train_1.columns
c1 = np.setdiff1d(train.columns, train_1.columns)
//columns in train_1.columns that are not in train.columns
c2 = np.setdiff1d(train_1.columns, train.columns)
用這樣的東西
data_3 = data1[~data1.isin(data2)]
其中data1和data2是列,而data_3 = data_1-data_2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.