gpt4 book ai didi

python - 如何在 Pandas 中合并 "(df1 & not df2)"数据帧?

转载 作者:太空狗 更新时间:2023-10-29 21:28:40 25 4
gpt4 key购买 nike

我有 2 个 pandas 数据帧 df1 和 df2,它们具有公共(public)列/键 (x,y)。

我想合并对键(x,y)进行“(df1&not df2)”类型的合并,这意味着我希望我的代码返回一个数据框,其中包含仅在df1而不是(x,y)中的行在 df2 中。

SAS 具有等效的功能

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

谁能优雅地在 pandas 中复制相同的功能?如果我们能在 merge() 中指定 how="left-right"就好了。

最佳答案

我刚刚升级到 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 是分类类型,对于其合并键仅出现在“左”DataFrame 中的观察,取值为 left_only,对于其合并键仅出现在“右”DataFrame 中的观察,取值为 right_only,如果观察的合并键在两者中都找到.

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

关于python - 如何在 Pandas 中合并 "(df1 & not df2)"数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32676027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com