首页 > 解决方案 > 对于两个数据框,如何检索两个标签值的组合在一个但不在另一个的行

问题描述

在我的 python 应用程序中,我有两个带有以下标签的数据框:

df1:: page, origin, count

df2:: page, claim, verdict, origin

在哪里:

每个特定页面可以有多个来源,并且不同页面的来源可能会重复:

df1 包含所有页面及其相关来源的大列表(因此同一页面可以重复)

df2 包含用户访问的页源组合的详细信息


我想要做的是,使用我假设,获取某个用户尚未访问的.loc所有行。df1我想page-origin用作某种主键来删除中的所有相应行df2df1

例如:

df1:
  page       origin     count
www.h1.com  www.h1.com    2
www.h1.com  www.h2.com    1
www.h2.com  www.h1.com    0
www.h3.com  www.h4.com    4

df2:
  page           claim           verdict     origin     count
www.h1.com | the world is flat |  false  |  www.h1.com    2
www.h1.com | the world is flat |  false  |  www.h2.com    3

会给:

   page       origin    count
www.h2.com  www.h1.com    0
www.h3.com  www.h4.com    4

标签: pythonpandasdataframe

解决方案


感谢@yatu 的回答,这是使用

df1[~(df1.page.isin(df2.page) & df1.origin.isin(df2.origin))]

推荐阅读