python - 如果我有两个数据框,其中一个是其他数据框的子集,如何完全删除公共行?
问题描述
我已经寻找过这类问题,但他们都没有真正回答我的问题。
假设我有两个数据框,并且它们的索引不一致。df2
是 的子集,df1
我想删除df1
中存在的所有行df2
。
我已经尝试了以下方法,但它没有给我我正在寻找的结果。
df1[~df1.index.isin(df2.index)]
不幸的是,我无法与您分享原始数据,但是,两个数据框中的列数为 14。
这是我正在寻找的示例:
df1 =
month year sale
0 1 2012 55
1 4 2014 40
2 7 2013 84
3 10 2014 31
df2 =
month year sale
0 1 2012 55
1 10 2014 31
我正在寻找:
df =
month year sale
0 4 2014 40
1 7 2013 84
解决方案
使用左连接 byDataFrame.merge
和参数,然后比较( ) 的indicator
新列并按 过滤:Series.eq
==
boolean indexing
df = df1[df1.merge(df2, indicator=True, how='left')['_merge'].eq('left_only')]
print (df)
month year sale
1 4 2014 40
2 7 2013 84
推荐阅读
- docker - Docker GO 构建返回一个非零代码:1
- c# - 为什么不能用派生类代替接口成员中的基类?
- php - 语法错误导致类不存在 ReflectionException PHP
- asp.net-mvc - 我们如何返回带有 StatusCodeResult 202 接受响应的位置标头?
- apache-kafka - Kafka ksql简单连接不起作用
- phpmyadmin - 无法在 phytec-regor-board 中安装 phpmyadmin
- c# - C# - 在登录页面中使用 HttpWebRequest 和 POST 请求,它重定向到相同的登录页面
- skiasharp - PDF 页面上的多个剪辑区域不起作用
- vue.js - 我需要 VueJS 导航栏的帮助
- azure - MS Bot 更快的初始启动