如何在pandas中进行左外连接排除

时间:2018-05-26 13:34:03

标签: python pandas

我有两个数据帧,A和B,我希望得到A中但不是B中的数据帧,就像左下角的那个一样。

The one below the top left

数据框A包含列['a','b' + others],B包含列['a','b' + others]。没有NaN值。我尝试了以下方法:

1

dfm = dfA.merge(dfB, on=['a','b'])
dfe = dfA[(~dfA['a'].isin(dfm['a']) | (~dfA['b'].isin(dfm['b'])

2

dfm = dfA.merge(dfB, on=['a','b'])
dfe = dfA[(~dfA['a'].isin(dfm['a']) & (~dfA['b'].isin(dfm['b'])

3

dfe = dfA[(~dfA['a'].isin(dfB['a']) | (~dfA['b'].isin(dfB['b'])

4

dfe = dfA[(~dfA['a'].isin(dfB['a']) & (~dfA['b'].isin(dfB['b'])

但是当我得到len(dfm)len(dfe)时,他们并不总结为dfA(它被一些数字关闭)。我已尝试在虚拟案例中执行此操作,并且#1正常工作,因此我的数据集可能具有一些我无法再现的特性。

正确的方法是什么?

2 个答案:

答案 0 :(得分:5)

查看this link

df['COL_MIDI'] = df.apply(col_checker)

一个班轮:

('UK_midi', 'occurred at index target')

答案 1 :(得分:0)

我认为它会像Pandas left outer join multiple dataframes on multiple columns

中的示例
dfe = pd.merge(dFA, dFB, how='left', on=['a','b'], indicator=True)
dfe[dfe[_merge] == 'left_only']