df1:df2:
Column1 Column2 Column3 ColumnA ColumnB ColumnC
0 a x x 0 c y y
1 c x x 1 e z z
2 e x x 2 a s s
3 d x x 3 d f f
4 h x x
5 k x x
df1.merge(df2,left_on =' Column1',right_on =' ColumnA')
如何知道h和k的行会丢失?
我知道='离开' pd.merge函数上的选项,但如何识别不匹配的值并同时执行内连接?
我需要首先执行how =' left',然后打印columnA,其中columnA是NaN,然后删除这些?
修改
用例如下:客户提供2个文件,说文件1中的column1将始终与文件2的A列匹配。
然后,我们想要一种安全的方法断言,在违反时打印错误消息
答案 0 :(得分:2)
如果需要找到所有不同的值,请使用isin
与boolean indexing
:
a = df1.loc[~df1['Column1'].isin(df2['ColumnA']), 'Column1']
print (a)
4 h
5 k
Name: Column1, dtype: object
对于检查,可以在逆掩码中计算True
s并与0
进行比较:
a = (~df1['Column1'].isin(df2['ColumnA'])).sum() == 0
print (a)
False
为了更快地使用numpy
与numpy.setdiff1d
合作解决方案:
a = np.setdiff1d(df1['Column1'], df2['ColumnA'])
print (a)
['h' 'k']
a = len(np.setdiff1d(df1['Column1'], df2['ColumnA'])) == 0
print (a)
False