我有两个数据帧,A和B,我想把它们放在A中,而不是B中,就像左上角下面的那个一样。
数据帧A有列['a','b' + others]
,B有列['a','b' + others]
。没有nan值。我尝试了以下方法:
一。
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'])
三。
dfe = dfA[(~dfA['a'].isin(dfB['a']) | (~dfA['b'].isin(dfB['b'])
四。
dfe = dfA[(~dfA['a'].isin(dfB['a']) & (~dfA['b'].isin(dfB['b'])
但是,当我得到
len(dfm)
和len(dfe)
时,它们的总和并不是dfA
(它是由几个数字关闭的)。我试过在虚拟案例中这样做,1可以工作,所以我的数据集可能有一些我无法复制的特性。正确的方法是什么?
最佳答案
df=pd.merge(dfA, dfB, on=['a','b'], how="outer", indicator=True)
df=df[df['_merge'] =='left_only']
一行:
df = pd.merge(dfA, dfB, on=['a','b'], how="outer", indicator=True
).query('_merge=="left_only"')
关于python - 如何在 Pandas 中进行左外部联接排除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50543326/