2017-10-06 113 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)