pandas求兩個表格不相交的集合

翻滾的老鼠屎發表於2018-05-26

    Hi,好久不見,我還是那顆翻滾的老鼠屎。處理資料時想求兩個表格求不相交的部分,或許是對知識的匱乏限制了我的想象力,並未找到直接求的方法,在這裡介紹老鼠屎技己使用的方法,希望對讀者會有幫助。

    

陰影部分為所要求的部分(但是前提是A、B兩個集合都是無重複內容的集合)

    首先先造兩個DataFrame來做示例。

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的樣子

       

a                      b

    關於差集,我們是要去除兩個DataFrame中公共的部分,因此我的想法是:

    (1)先將兩個DataFrame融合為一個DataFrame;

    (2)去掉當中公共的部分(使用drop_duplicates去重)。

    下面來看一下程式碼:

c=a.append(b)
c.drop_duplicates(keep=False,inplace=True)
c.reset_index()
    這裡想要說明的是,drop_duplicates當中的引數keep=False,意為重複項全部刪除,它還有keep="first"與keep="last",分別對應在有多項重複時,保留第一項(或最後一項)。具體可參考官方文件

    得到的效果是雖然過程很簡單,但是很好用。



    同樣的道理可用來求差集,在此不做贅述。

後記

    還有一點點時間下班,其實有很多感慨。不長的人生裡,很開心會在這所學校遇到一個和我很契合的人。然而畢業季也是別離季。尚未準備好的我們,就要在這鬱鬱蔥蔥滿是綠意本該還有太多美好的季節匆匆話別。他有他的憧憬,我有我的不捨。在一起時不懂得珍惜,即將分別分外難過。

    只願所愛隔山海,山海亦可平。願在將來不在彼此身邊的日子,我們都可以成長。再次相遇時,都會成為更好的人。

相關文章