LEFT| RIGHT| FULL)(INNER| OUTER)连接?merge?join?concat?update?谁?什么?为什么?!... 和更多.我已经看到了这些反复出现的问题,询问了pandas合并功能的各个方面.今天关于合并及其各种用例的大部分信息在几十个措辞严厉,不可搜索的帖子中都是分散的.这里的目的是为后代整理一些更重要的观点.
这个QnA应该是关于常见熊猫习语的一系列有用的用户指南的下一部分(参见关于转动的这篇文章,以及关于连接的这篇文章,我将在稍后介绍).
请注意,这篇文章并不是文档的替代品,所以请阅读它!一些例子来自那里.
我是使用DataFrame的新手,我想知道如何在一系列表的多个列上执行左外连接的SQL等价物
例:
df1:
Year Week Colour Val1
2014 A Red 50
2014 B Red 60
2014 B Black 70
2014 C Red 10
2014 D Green 20
df2:
Year Week Colour Val2
2014 A Black 30
2014 B Black 100
2014 C Green 50
2014 C Red 20
2014 D Red 40
df3:
Year Week Colour Val3
2013 B Red 60
2013 C Black 80
2013 B Black 10
2013 D Green 20
2013 D Red 50
Run Code Online (Sandbox Code Playgroud)
基本上我想做类似这样的SQL代码(注意df3没有加入Year):
SELECT df1.*, …Run Code Online (Sandbox Code Playgroud) 我有2个pandas数据帧df1和df2与公共列/键(x,y).
我想在键(x,y)上合并做一个"(df1¬ df2)"类型的合并,这意味着我希望我的代码只在df1而不是在df2中返回包含(x,y)行的数据帧.
SAS具有同等功能
data final;
merge df1(in=a) df2(in=b);
by x y;
if a & not b;
run;
Run Code Online (Sandbox Code Playgroud)
谁优雅地在熊猫中复制相同的功能?如果我们可以在merge()中指定how"= left-right",那将会很棒.