Pandas中两个DataFrame的差集
在pandas中,两个DataFrame的差集并没有直接的库内置方法,现在我们希望有一种方法,就像python中set内置的求差集一样,来找到两个DataFrame的差集。
1 2 3 4 5 6 7 8 | >>> a = set (( 1 , 2 , 3 )) >>> a { 1 , 2 , 3 } >>> b = set (( 2 , 3 , 4 )) >>> b { 2 , 3 , 4 } >>> a - b { 1 } |
上面代码片段是对set的内置求差集方法的回顾,现在我们希望能有类似的方法来找两个DataFrame的差集。
解决思路是这样的:
对于有同样Index的a,b两个DataFrame,如果现在要求a对b的差集,那么可以(1)连续两次扩充a,使用append方法(2)然后使用drop_duplicates方法对a进行去重,并且参数keep=False。原理很简单,也很巧妙,连续扩充2次a,那么新扩充完后的DataFrame中来自b的row肯定是重复的,去重时候,b全部被删除,与此同时,a中跟b重复的row也会顺带着被删除。
代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | >>> import pandas as pd >>> data_a = { 'state' :[ 1 , 1 , 2 ], 'pop' :[ 'a' , 'b' , 'c' ]} >>> data_b = { 'state' :[ 1 , 2 , 3 ], 'pop' :[ 'b' , 'c' , 'd' ]} >>> a = pd.DataFrame(data_a) >>> b = pd.DataFrame(data_b) >>> a state pop 0 1 a 1 1 b 2 2 c >>> b state pop 0 1 b 1 2 c 2 3 d >>> a = a.append(b) >>> a = a.append(b) >>> a state pop 0 1 a 1 1 b 2 2 c 0 1 b 1 2 c 2 3 d 0 1 b 1 2 c 2 3 d >>> a.drop_duplicates(subset = [ 'state' , 'pop' ],keep = False ) state pop 0 1 a |
#####
愿你一寸一寸地攻城略地,一点一点地焕然一新
#####
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)