LEFT| RIGHT| FULL)(INNER| OUTER)连接?merge?join?concat?update?谁?什么?为什么?!... 和更多.我已经看到了这些反复出现的问题,询问了pandas合并功能的各个方面.今天关于合并及其各种用例的大部分信息在几十个措辞严厉,不可搜索的帖子中都是分散的.这里的目的是为后代整理一些更重要的观点.
这个QnA应该是关于常见熊猫习语的一系列有用的用户指南的下一部分(参见关于转动的这篇文章,以及关于连接的这篇文章,我将在稍后介绍).
请注意,这篇文章并不是文档的替代品,所以请阅读它!一些例子来自那里.
我有两个数据帧,A和B,我希望得到A中但不是B中的数据帧,就像左下角的那个.
Dataframe 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'])
Run Code Online (Sandbox Code Playgroud)
2.
dfm = dfA.merge(dfB, on=['a','b'])
dfe = dfA[(~dfA['a'].isin(dfm['a']) & (~dfA['b'].isin(dfm['b'])
Run Code Online (Sandbox Code Playgroud)
3.
dfe = dfA[(~dfA['a'].isin(dfB['a']) | (~dfA['b'].isin(dfB['b'])
Run Code Online (Sandbox Code Playgroud)
4.
dfe = dfA[(~dfA['a'].isin(dfB['a']) & (~dfA['b'].isin(dfB['b'])
Run Code Online (Sandbox Code Playgroud)
但是当我len(dfm)和len(dfe)他们不总结到dfA(它由几个数字是关闭).我试过在虚拟案例和#1工作中这样做,所以也许我的数据集可能有一些我无法重现的特性.
这样做的正确方法是什么?