2017-10-06 63 views
0

我想檢查兩個DataFrame列之間的差異。我嘗試使用命令:如何找到兩個熊貓DataFrames之間的設置差異

np.setdiff1d(train.columns, train_1.columns) 

這導致空數組:

array([], dtype=object) 

然而,列在dataframes數量是不同的:

len(train.columns), len(train_1.columns) = (51, 56) 

這意味着該兩個DataFrame明顯不同。

這裏有什麼問題?

+0

'np.setdiff1d'設置差異。意思是它在第一個參數中找到不在第二個參數中的東西。返回一個空數組意味着'train.columns'中沒有'train_1.columns'中沒有任何內容。 – piRSquared

回答

1

結果正確,但是,setdiff1d與訂單相關。它只會檢查第一個輸入數組中不在第二個數組中出現的元素。

如果您不關心哪些數據框具有唯一列,您可以使用setxor1d。它將返回「僅在一個(不是兩個)輸入數組中的唯一值」,請參閱documentation

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) 
相關問題