我想检查两个DataFrame列之间的区别。我尝试使用命令:
np.setdiff1d(train.columns, train_1.columns)
导致一个空数组:
array([], dtype=object)
但是,数据框中的列数不同:
len(train.columns), len(train_1.columns) = (51, 56)
这意味着两个DataFrame明显不同。
这里有什么问题?
答案 0 :(得分: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)
答案 1 :(得分:1)
使用类似的东西
data_3 = data1[~data1.isin(data2)]
其中data1和data2是列,而data_3 = data_1-data_2