hi,好久不见,我还是那颗翻滚的老鼠屎。处理数据时想求两个表格求不相交的部分,或许是对知识的匮乏限制了我的想象力,并未找到直接求的方法,在这里介绍老鼠屎技己使用的方法,希望对读者会有帮助。
阴影部分为所要求的部分(但是前提是a、b两个集合都是无重复内容的集合)
首先先造两个dataframe来做示例。
1
2
3
4
5
|
import pandas as pd
a0 = { "number" : range ( 10 ), "letter" :[ "a" , "a" , "b" , "b" , "c" , "f" , "f" , "e" , "h" , "w" ]}
a = pd.dataframe(a0)
b0 = { "number" : range ( 15 ), "letter" :[ "b" , "a" , "t" , "b" , "r" , "f" , "g" , "e" , "j" , "w" , "t" , "h" , "i" , "y" , "u" ]}
b = pd.dataframe(b0)
|
看一下两个dataframe的样子
关于差集,我们是要去除两个dataframe中公共的部分,因此我的想法是:
(1)先将两个dataframe融合为一个dataframe;
(2)去掉当中公共的部分(使用drop_duplicates去重)。
下面来看一下代码:
1
2
3
|
c = a.append(b)
c.drop_duplicates(keep = false,inplace = true)
c.reset_index()
|
这里想要说明的是,drop_duplicates当中的参数keep=false,意为重复项全部删除,它还有keep="first"与keep="last",分别对应在有多项重复时,保留第一项(或最后一项)。具体可参考官方文档。
得到的效果是如下所示。虽然过程很简单,但是很好用。
同样的道理可用来求差集,在此不做赘述。
以上这篇pandas求两个表格不相交的集合方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/LaoChengZier/article/details/80459678