Pandas數(shù)據(jù)合并的兩種實現(xiàn)方法
DataFrame數(shù)據(jù)合并主要使用merge()方法和concat()方法。
1.數(shù)據(jù)合并(merge()方法)
Pandas模塊的merge()進行數(shù)據(jù)合并時,兩個DataFrame對象必須有相同的列。
1.常規(guī)合并
import pandas as pd
df1 = pd.DataFrame({'編號':['mr001','mr002','mr003'],
'語文':[110,105,109],
'數(shù)學':[105,88,120],
'英語':[99,115,130]})
df2 = pd.DataFrame({'編號':['mr001','mr002','mr003'],
'體育':[34.5,39.7,38]})
df_merge=pd.merge(df1,df2,on='編號')
print(df_merge)該示例中,編號是相同的,所以會將df2中“體育”作為新的一列加入到df1中。
2.通過索引合并
import pandas as pd
df1 = pd.DataFrame({'編號':['mr001','mr002','mr003'],
'語文':[110,105,109],
'數(shù)學':[105,88,120],
'英語':[99,115,130]})
df2 = pd.DataFrame({'編號':['mr001','mr002','mr003'],
'體育':[34.5,39.7,38]})
df_merge=pd.merge(df1,df2,left_index=True,right_index=True)
print(df_merge)
3.對合并數(shù)據(jù)去重
使用到how屬性,就是讓df1保留所有的行列數(shù)據(jù),df2則根據(jù)df1的行列進行補全。
import pandas as pd
df1 = pd.DataFrame({'編號':['mr001','mr002','mr003'],
'語文':[110,105,109],
'數(shù)學':[105,88,120],
'英語':[99,115,130]})
df2 = pd.DataFrame({'編號':['mr001','mr002','mr003'],
'體育':[34.5,39.7,38]})
df_merge=pd.merge(df1,df2,on='編號',left_index=True,right_index=True)
print(df_merge)
df_merge=pd.merge(df1,df2,on='編號',how='left')
print(df_merge)
4.多對一的數(shù)據(jù)合并
根據(jù)共有列中的數(shù)據(jù)進行合并,df2根據(jù)df1的行列進行補全。
import pandas as pd
df1 = pd.DataFrame({'編號':['mr001','mr002','mr003'],
'學生姓名':['明日同學','高猿員','錢多多']})
df2 = pd.DataFrame({'編號':['mr001','mr001','mr003'],
'語文':[110,105,109],
'數(shù)學':[105,88,120],
'英語':[99,115,130],
'時間':['1月','2月','1月']})
df_merge=pd.merge(df1,df2,on='編號')
print(df_merge)
5.多對多的數(shù)據(jù)合并
根據(jù)共有列中的數(shù)據(jù)進行合并,df2,df1相互補全。
import pandas as pd
df1 = pd.DataFrame({'編號':['mr001','mr002','mr003','mr001','mr001'],
'體育':[34.5,39.7,38,33,35]})
df2 = pd.DataFrame({'編號':['mr001','mr002','mr003','mr003','mr003'],
'語文':[110,105,109,110,108],
'數(shù)學':[105,88,120,123,119],
'英語':[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)
如果需要標記源數(shù)據(jù)來自于哪張表,可以使用:
result = pd.concat(dfs, keys=['第一張表','第二張表','第三張表'])
2.橫向表合并(行對齊)
用于數(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.指定表對其數(shù)據(jù)(行對齊)
如果指定參數(shù)join_axes,就可以指定根據(jù)哪張表來對齊數(shù)據(jù)。如下述代碼,根據(jù)df4表對其,結(jié)果表的行術(shù)和df4的行術(shù)一致,在此基礎(chǔ)上拼接df1表。
result = pd.concat([df1,df4],axis=1,join_axes[df4.index])
到此這篇關(guān)于Pandas數(shù)據(jù)合并的兩種實現(xiàn)方法的文章就介紹到這了,更多相關(guān)Pandas數(shù)據(jù)合并內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 在Pandas中DataFrame數(shù)據(jù)合并,連接(concat,merge,join)的實例
- 詳解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實現(xiàn)數(shù)據(jù)合并的示例代碼
- Python?Pandas數(shù)據(jù)合并pd.merge用法詳解
- Python?pandas數(shù)據(jù)合并merge函數(shù)用法詳解
- Python利用pandas進行數(shù)據(jù)合并詳解
- Pandas中數(shù)據(jù)合并的實現(xiàn)
相關(guān)文章
Python人工智能學習PyTorch實現(xiàn)WGAN示例詳解
這篇文章主要為大家介紹了人工智能學習PyTorch實現(xiàn)WGAN的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-11-11
Python分析微信好友性別比例和省份城市分布比例的方法示例【基于itchat模塊】
這篇文章主要介紹了Python分析微信好友性別比例和省份城市分布比例的方法,結(jié)合實例形式分析了Python基于itchat模塊獲取及計算微信好友相關(guān)信息操作技巧,需要的朋友可以參考下2020-05-05
解決python3 Pycharm上連接數(shù)據(jù)庫時報錯的問題
今天小編就為大家分享一篇解決python3 Pycharm上連接數(shù)據(jù)庫時報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
selenium設置瀏覽器為headless無頭模式(Chrome和Firefox)
這篇文章主要介紹了selenium設置瀏覽器為headless無頭模式(Chrome和Firefox),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01

