如果将合并类型更改为
how='outer',
indicator=True这将添加一列以告诉您这些值是否仅是左/左右/右:
In [2]:A = pd.Dataframe({'x':np.arange(5)})B = pd.Dataframe({'x':np.arange(3,8)})print(A)print(B) x0 01 12 23 34 4 x0 31 42 53 64 7In [3]:pd.merge(A,B, how='outer', indicator=True)Out[3]: x _merge0 0.0 left_only1 1.0 left_only2 2.0 left_only3 3.0 both4 4.0 both5 5.0 right_only6 6.0 right_only7 7.0 right_only
然后,您可以在
_mergecol上过滤结果合并的df :
In [4]:merged = pd.merge(A,B, how='outer', indicator=True)merged[merged['_merge'] == 'left_only']Out[4]: x _merge0 0.0 left_only1 1.0 left_only2 2.0 left_only
您也可以使用
isin和否定掩码以查找不在B中的值:
In [5]:A[~A['x'].isin(B['x'])]Out[5]: x0 01 12 2
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)