如何确保在pd.merge

时间:2017-11-30 14:11:49

标签: python pandas dataframe merge

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列匹配。

然后,我们想要一种安全的方法断言,在违反时打印错误消息

1 个答案:

答案 0 :(得分:2)

如果需要找到所有不同的值,请使用isinboolean 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

为了更快地使用numpynumpy.setdiff1d合作解决方案:

a = np.setdiff1d(df1['Column1'], df2['ColumnA'])
print (a)
['h' 'k']

a = len(np.setdiff1d(df1['Column1'], df2['ColumnA'])) == 0
print (a)
False