[英]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.