pandas進(jìn)行數(shù)據(jù)的交集與并集方式的數(shù)據(jù)合并方法
數(shù)據(jù)合并有多種方式,其中最常見的應(yīng)該就是交集和并集的求取。之前通過(guò)分析總結(jié)過(guò)pandas數(shù)據(jù)merge功能默認(rèn)的行為,其實(shí)默認(rèn)下求取的就是兩個(gè)數(shù)據(jù)的“交集”。
有如下數(shù)據(jù)定義:
In [26]: df1 Out[26]: data1 key 0 0 b 1 1 b 2 2 a 3 3 c 4 4 a 5 5 a 6 6 b
In [27]: df2 Out[27]: data2 key 0 0 a 1 1 b 2 2 d 3 3 b
進(jìn)行merge的結(jié)果:
In [28]: pd.merge(df1,df2) Out[28]: data1 key data2 0 0 b 1 1 0 b 3 2 1 b 1 3 1 b 3 4 6 b 1 5 6 b 3 6 2 a 0 7 4 a 0 8 5 a 0
從上面的結(jié)果中能夠看出,merge的默認(rèn)處理行為是求取了兩組數(shù)據(jù)key的交集,但是對(duì)于key的值進(jìn)行了并集的求取。其實(shí)也很好理解,如果僅僅是求取交集而數(shù)據(jù)沒(méi)有任何合并那就不叫做數(shù)據(jù)合并了。
接下來(lái)試一下制定了參數(shù)的的交集數(shù)據(jù)合并處理:
In [29]: pd.merge(df1,df2,how='inner') Out[29]: data1 key data2 0 0 b 1 1 0 b 3 2 1 b 1 3 1 b 3 4 6 b 1 5 6 b 3 6 2 a 0 7 4 a 0 8 5 a 0
In [30]: result_inner = pd.merge(df1,df2,how='inner') In [31]: result_default = pd.merge(df1,df2)
In [32]: result_inner == result_default Out[32]: data1 key data2 0 True True True 1 True True True 2 True True True 3 True True True 4 True True True 5 True True True 6 True True True 7 True True True 8 True True True
通過(guò)上面的結(jié)果可以看出:制定了參數(shù)的的交集數(shù)據(jù)合并處理的結(jié)果與數(shù)據(jù)合并方法merge的默認(rèn)行為是一致的。
再試一下并集數(shù)據(jù)合并處理方法,這需要制定參數(shù)how為outer:
In [35]: result_outer = pd.merge(df1,df2,how='outer')
In [36]: result_outer Out[36]: data1 key data2 0 0.0 b 1.0 1 0.0 b 3.0 2 1.0 b 1.0 3 1.0 b 3.0 4 6.0 b 1.0 5 6.0 b 3.0 6 2.0 a 0.0 7 4.0 a 0.0 8 5.0 a 0.0 9 3.0 c NaN 10 NaN d 2.0
通過(guò)上面的執(zhí)行結(jié)果可以看出:合并后的數(shù)據(jù)中的key擁有了兩組數(shù)據(jù)所有的key,而數(shù)據(jù)雖然有一部分兩組數(shù)據(jù)不能夠重合,但也通過(guò)NaN的值進(jìn)行了相應(yīng)的填補(bǔ)。
還有一點(diǎn)需要注意的,那就是合并之后的數(shù)據(jù)個(gè)數(shù)。合并后的數(shù)據(jù)中,key的個(gè)數(shù)是兩組數(shù)據(jù)中分別擁有的數(shù)據(jù)的笛卡爾乘積。如果其中一組沒(méi)有的時(shí)候,進(jìn)行合并的時(shí)候另一組數(shù)據(jù)中會(huì)創(chuàng)建一個(gè)NaN數(shù)值的對(duì)象與之進(jìn)行合并。
以上這篇pandas進(jìn)行數(shù)據(jù)的交集與并集方式的數(shù)據(jù)合并方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python?pandas數(shù)據(jù)合并merge函數(shù)用法詳解
- pandas數(shù)據(jù)合并之pd.concat()用法詳解
- Python必備技巧之Pandas數(shù)據(jù)合并函數(shù)
- pandas將DataFrame的幾列數(shù)據(jù)合并成為一列
- 一文搞懂Python中Pandas數(shù)據(jù)合并
- Python基礎(chǔ)之pandas數(shù)據(jù)合并
- pandas DataFrame實(shí)現(xiàn)幾列數(shù)據(jù)合并成為新的一列方法
- Pandas數(shù)據(jù)合并的兩種實(shí)現(xiàn)方法
相關(guān)文章
TensorFlow安裝及jupyter notebook配置方法
下面小編就為大家?guī)?lái)一篇TensorFlow安裝及jupyter notebook配置方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09Python用 KNN 進(jìn)行驗(yàn)證碼識(shí)別的實(shí)現(xiàn)方法
這篇文章主要介紹了Python用 KNN 進(jìn)行驗(yàn)證碼識(shí)別的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-02-02Python+OpenCV圖像處理—— 色彩空間轉(zhuǎn)換
這篇文章主要介紹了Python+OpenCV如何對(duì)圖片進(jìn)行色彩空間轉(zhuǎn)換,幫助大家更好的利用python處理圖片,感興趣的朋友可以了解下下2020-10-10Queue隊(duì)列中join()與task_done()的關(guān)系及說(shuō)明
這篇文章主要介紹了Queue隊(duì)列中join()與task_done()的關(guān)系及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Sublime Text3最新激活注冊(cè)碼分享適用2020最新版 親測(cè)可用
這篇文章主要介紹了Sublime Text3最新激活注冊(cè)碼分享親測(cè)3211可用2020-11-11Python標(biāo)準(zhǔn)庫(kù)os庫(kù)的常用功能解析
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫(kù)os庫(kù)的常用功能解析,os庫(kù)是Python標(biāo)準(zhǔn)庫(kù)之一,它提供了非常豐富的文件及目錄讀寫的方法2022-07-07