Geo*_*eRF 8 python merge join dataframe pandas
我有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",那将会很棒.
Geo*_*eRF 16
我刚刚升级到10天前发布的版本0.17.0 RC1.刚刚发现pd.merge()在这个新版本中有一个名为indicator = True的新参数,以pandonic方式实现这一点!!
df=pd.merge(df1,df2,on=['x','y'],how="outer",indicator=True)
df=df[df['_merge']=='left_only']
Run Code Online (Sandbox Code Playgroud)
指示器:向名为_merge的输出DataFrame添加一列,其中包含每行源的信息._merge是分类型的,并且对于其合并键仅出现在'left'DataFrame中的观察值具有left_only的值,对于其合并键仅出现在'right'DataFrame中的观察的right_only,以及如果在两个中都找到观察的合并键的观察值.