Pandas數(shù)據(jù)合并的兩種實(shí)現(xiàn)方法
DataFrame數(shù)據(jù)合并主要使用merge()方法和concat()方法。
1.數(shù)據(jù)合并(merge()方法)
Pandas模塊的merge()進(jìn)行數(shù)據(jù)合并時(shí),兩個(gè)DataFrame對(duì)象必須有相同的列。
1.常規(guī)合并
import pandas as pd df1 = pd.DataFrame({'編號(hào)':['mr001','mr002','mr003'], '語(yǔ)文':[110,105,109], '數(shù)學(xué)':[105,88,120], '英語(yǔ)':[99,115,130]}) df2 = pd.DataFrame({'編號(hào)':['mr001','mr002','mr003'], '體育':[34.5,39.7,38]}) df_merge=pd.merge(df1,df2,on='編號(hào)') print(df_merge)
該示例中,編號(hào)是相同的,所以會(huì)將df2中“體育”作為新的一列加入到df1中。
2.通過(guò)索引合并
import pandas as pd df1 = pd.DataFrame({'編號(hào)':['mr001','mr002','mr003'], '語(yǔ)文':[110,105,109], '數(shù)學(xué)':[105,88,120], '英語(yǔ)':[99,115,130]}) df2 = pd.DataFrame({'編號(hào)':['mr001','mr002','mr003'], '體育':[34.5,39.7,38]}) df_merge=pd.merge(df1,df2,left_index=True,right_index=True) print(df_merge)
3.對(duì)合并數(shù)據(jù)去重
使用到how屬性,就是讓df1保留所有的行列數(shù)據(jù),df2則根據(jù)df1的行列進(jìn)行補(bǔ)全。
import pandas as pd df1 = pd.DataFrame({'編號(hào)':['mr001','mr002','mr003'], '語(yǔ)文':[110,105,109], '數(shù)學(xué)':[105,88,120], '英語(yǔ)':[99,115,130]}) df2 = pd.DataFrame({'編號(hào)':['mr001','mr002','mr003'], '體育':[34.5,39.7,38]}) df_merge=pd.merge(df1,df2,on='編號(hào)',left_index=True,right_index=True) print(df_merge) df_merge=pd.merge(df1,df2,on='編號(hào)',how='left') print(df_merge)
4.多對(duì)一的數(shù)據(jù)合并
根據(jù)共有列中的數(shù)據(jù)進(jìn)行合并,df2根據(jù)df1的行列進(jìn)行補(bǔ)全。
import pandas as pd df1 = pd.DataFrame({'編號(hào)':['mr001','mr002','mr003'], '學(xué)生姓名':['明日同學(xué)','高猿員','錢(qián)多多']}) df2 = pd.DataFrame({'編號(hào)':['mr001','mr001','mr003'], '語(yǔ)文':[110,105,109], '數(shù)學(xué)':[105,88,120], '英語(yǔ)':[99,115,130], '時(shí)間':['1月','2月','1月']}) df_merge=pd.merge(df1,df2,on='編號(hào)') print(df_merge)
5.多對(duì)多的數(shù)據(jù)合并
根據(jù)共有列中的數(shù)據(jù)進(jìn)行合并,df2,df1相互補(bǔ)全。
import pandas as pd df1 = pd.DataFrame({'編號(hào)':['mr001','mr002','mr003','mr001','mr001'], '體育':[34.5,39.7,38,33,35]}) df2 = pd.DataFrame({'編號(hào)':['mr001','mr002','mr003','mr003','mr003'], '語(yǔ)文':[110,105,109,110,108], '數(shù)學(xué)':[105,88,120,123,119], '英語(yǔ)':[99,115,130,109,128]}) df_merge=pd.merge(df1,df2) print(df_merge)
2.數(shù)據(jù)合并(concat()方法)
1.相同字段的表首尾相連
dfs = [df1,df2,df3] result = pd.concat(dfs)
如果需要標(biāo)記源數(shù)據(jù)來(lái)自于哪張表,可以使用:
result = pd.concat(dfs, keys=['第一張表','第二張表','第三張表'])
2.橫向表合并(行對(duì)齊)
用于數(shù)據(jù)列名不一致,缺失的數(shù)據(jù)使用Nan填充 。其中axis=1代表行合并。
result = pd.concat([df1,df4],axis=1)
3.交叉合并
交叉合并需要加上join參數(shù),如值為inner,結(jié)果為兩張表的交集;如果值為outer,結(jié)果為兩張表的并集。
result = pd.concat([df1,df4],axis=1,join='inner')
4.指定表對(duì)其數(shù)據(jù)(行對(duì)齊)
如果指定參數(shù)join_axes,就可以指定根據(jù)哪張表來(lái)對(duì)齊數(shù)據(jù)。如下述代碼,根據(jù)df4表對(duì)其,結(jié)果表的行術(shù)和df4的行術(shù)一致,在此基礎(chǔ)上拼接df1表。
result = pd.concat([df1,df4],axis=1,join_axes[df4.index])
到此這篇關(guān)于Pandas數(shù)據(jù)合并的兩種實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Pandas數(shù)據(jù)合并內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 在Pandas中DataFrame數(shù)據(jù)合并,連接(concat,merge,join)的實(shí)例
- 詳解pandas數(shù)據(jù)合并與重塑(pd.concat篇)
- Python基礎(chǔ)之pandas數(shù)據(jù)合并
- pandas中DataFrame數(shù)據(jù)合并連接(merge、join、concat)
- 一文搞懂Python中Pandas數(shù)據(jù)合并
- Python必備技巧之Pandas數(shù)據(jù)合并函數(shù)
- pandas實(shí)現(xiàn)數(shù)據(jù)合并的示例代碼
- Python?Pandas數(shù)據(jù)合并pd.merge用法詳解
- Python?pandas數(shù)據(jù)合并merge函數(shù)用法詳解
- Python利用pandas進(jìn)行數(shù)據(jù)合并詳解
- Pandas中數(shù)據(jù)合并的實(shí)現(xiàn)
相關(guān)文章
Python中的list.sort()方法和函數(shù)sorted(list)
這篇文章主要介紹了Python中的list.sort()方法和函數(shù)sorted(list),sort()是列表的方法,修改原列表使得它按照大小排序,沒(méi)有返回值,返回None2022-08-08python寫(xiě)入已存在的excel數(shù)據(jù)實(shí)例
下面小編就為大家分享一篇python寫(xiě)入已存在的excel數(shù)據(jù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05VSCode2022配置Python3.9.6的詳細(xì)教程
這篇文章主要介紹了VSCode2022配置Python3.9.6教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09Python 私有屬性和私有方法應(yīng)用場(chǎng)景分析
這篇文章主要介紹了Python 私有屬性和私有方法應(yīng)用場(chǎng)景分析,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06python多線(xiàn)程高級(jí)鎖condition簡(jiǎn)單用法示例
這篇文章主要介紹了python多線(xiàn)程高級(jí)鎖condition簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了condition對(duì)象常用方法及相關(guān)使用技巧,需要的朋友可以參考下2019-11-11Python使用QQ郵箱發(fā)送Email的方法實(shí)例
實(shí)際開(kāi)發(fā)過(guò)程中使用到郵箱的概率很高,那么如何借助python使用qq郵箱發(fā)送郵件呢?正好最近工作遇到這個(gè)需求,所以想著把方法分享出來(lái)方便大家,所以這篇文章主要介紹了Python使用QQ郵箱發(fā)送Email的實(shí)現(xiàn)方法,需要的朋友可以參考。2017-02-02Pygame實(shí)戰(zhàn)之實(shí)現(xiàn)扎氣球游戲
這篇文章主要為大家介紹了利用Python中的Pygame模塊實(shí)現(xiàn)的一個(gè)扎氣球游戲,文中的示例代碼講解詳細(xì),對(duì)我們了解Pygame模塊有一定的幫助,感興趣的可以學(xué)習(xí)一下2021-12-125行Python代碼實(shí)現(xiàn)圖像分割的步驟詳解
這篇文章主要介紹了5行Python代碼實(shí)現(xiàn)圖像分割的步驟詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05python?time模塊計(jì)算時(shí)間之間的差距(練習(xí)題)
這篇文章主要介紹了python?time模塊計(jì)算時(shí)間之間的差距,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05