怎么做"(df1& not df2)" pandas中的数据帧合并?

时间:2015-09-20 05:10:46

标签: python join pandas merge dataframe

我有2个pandas数据帧df1& df2使用公共列/键(x,y)。

我想合并做一个"(df1& not df2)"键(x,y)上的合并类型,这意味着我希望我的代码只在df1&中返回包含(x,y)行的数据帧。不在df2。

SAS具有同等功能

data final;
merge df1(in=a) df2(in=b);
by x y;
if a & not b;
run;

谁优雅地在pandas中复制相同的功能? 如果我们可以指定=" left-right"那将会很棒。在merge()。

1 个答案:

答案 0 :(得分:10)

我刚刚升级到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']

指示符:向名为_merge的输出DataFrame添加一列,其中包含有关每行源的信息。 _merge是分类类型,并且对于其合并键仅出现在' left'中的观察值,其值为left_only。 DataFrame,right_only用于观察,其合并键仅出现在' right' DataFrame,以及在两者中都找到观察的合并密钥的情况。

http://pandas-docs.github.io/pandas-docs-travis/merging.html#database-style-dataframe-joining-merging