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函数上的='left'选项,但是我如何识别没有匹配的值并同时执行内部加入?
我是否需要首先执行='左',然后打印columnna是nan的列,然后删除这些?
编辑
用例就是以下内容:客户提供2个文件,说文件1中的第1列将始终在文件2的A列中具有匹配。
然后,我们想要一种安全的方法来断言,在违反此事时打印错误消息
如果需要查找所有不同的值,则使用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