




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第pandas實(shí)現(xiàn)數(shù)據(jù)合并的示例代碼1李四已婚研究生
pd.merge(df1,df2,left_on='姓名',right_on='員工姓名')#運(yùn)算結(jié)果如下
姓名性別職業(yè)員工姓名婚姻狀況學(xué)歷
0張三男IT張三未婚本科
1李四女運(yùn)營(yíng)李四已婚研究生
2.3指定數(shù)據(jù)連接方式--how參數(shù)
#how參數(shù)決定了將如何用on指定的key對(duì)兩個(gè)DataFrame進(jìn)行連接,主要是比對(duì)on指定的兩個(gè)df的列標(biāo)簽,
#如果取并集,則是outer,即連接后的Df會(huì)包含兩個(gè)df所有的key值;如果取交集,則是inner,即連接后的df只會(huì)包含兩個(gè)df均有的key值
#如果需要保證左邊df的key值必須有,右邊的不一定,則是left;如果需要保證右邊df的key值必須有,左邊的不一定,則是right
#df1數(shù)據(jù)源如下
姓名性別職業(yè)
0張三男IT
1李四女運(yùn)營(yíng)
#df2數(shù)據(jù)源如下
姓名婚姻狀況學(xué)歷
0張三未婚本科
1李四已婚研究生
2王五未婚博士
3麻子已婚研究生
pd.merge(df1,df2,how='outer')#運(yùn)算結(jié)果如下
姓名性別職業(yè)婚姻狀況學(xué)歷
0張三男IT未婚本科
1李四女運(yùn)營(yíng)已婚研究生
2王五NaNNaN未婚博士
3麻子NaNNaN已婚研究生
pd.merge(df1,df2,how='inner')#運(yùn)算結(jié)果如下
姓名性別職業(yè)婚姻狀況學(xué)歷
0張三男IT未婚本科
1李四女運(yùn)營(yíng)已婚研究生
pd.merge(df1,df2,how='left')#運(yùn)算結(jié)果如下
姓名性別職業(yè)婚姻狀況學(xué)歷
0張三男IT未婚本科
1李四女運(yùn)營(yíng)已婚研究生
pd.merge(df1,df2,how='right')#運(yùn)算結(jié)果如下
姓名性別職業(yè)婚姻狀況學(xué)歷
0張三男IT未婚本科
1李四女運(yùn)營(yíng)已婚研究生
2王五NaNNaN未婚博士
3麻子NaNNaN已婚研究生
2.4設(shè)置使用行索引作為連接key--left_index及right_index參數(shù)
#merge一般用于key為列標(biāo)簽時(shí),對(duì)兩個(gè)df進(jìn)行鏈接,類似SQL中的連表操作,不過(guò)如果需要,也可以使用行的index作為key進(jìn)行連表
#left_index、right_index,類似于left_on和right_on,這四個(gè)可以left和right兩兩結(jié)合,比如df1的index其實(shí)就是df2的列的key,此時(shí)便可以使用left_index=True,right_on='B',或者直接對(duì)兩個(gè)df用index進(jìn)行連表
#df1數(shù)據(jù)源如下
姓名性別職業(yè)
0張三男IT
1李四女運(yùn)營(yíng)
#df2數(shù)據(jù)源如下
姓名婚姻狀況學(xué)歷
0張三未婚本科
1李四已婚研究生
2王五未婚博士
3麻子已婚研究生
pd.merge(df1,df2,left_index=True,right_index=True#運(yùn)算結(jié)果如下
姓名_x性別職業(yè)姓名_y婚姻狀況學(xué)歷
0張三男IT張三未婚本科
1李四女運(yùn)營(yíng)李四已婚研究生
2.5設(shè)置有相同列時(shí)自動(dòng)加后綴--suffixes
#如果連接的兩個(gè)df,除了key列,或者on指定的列外,還有相同的列標(biāo)簽,為了進(jìn)行區(qū)分,pd會(huì)自動(dòng)在相同的列標(biāo)簽分別添加后綴,默認(rèn)是x、y,也可通過(guò)suffixes顯示指定
#df1數(shù)據(jù)源
姓名性別職業(yè)
0張三男IT
1李四女運(yùn)營(yíng)
#df2數(shù)據(jù)源
姓名職業(yè)婚姻狀況學(xué)歷
0張三IT未婚本科
1李四運(yùn)營(yíng)已婚研究生
2王五產(chǎn)品未婚博士
3麻子市場(chǎng)已婚研究生
pd.merge(df1,df2,on='姓名',how='outer',suffixes=('_表1','_表2'))#運(yùn)算結(jié)果如下
姓名性別職業(yè)_表1職業(yè)_表2婚姻狀況學(xué)歷
0張三男ITIT未婚本科
1李四女運(yùn)營(yíng)運(yùn)營(yíng)已婚研究生
2王五NaNNaN產(chǎn)品未婚博士
3麻子NaNNaN市場(chǎng)已婚研究生
三、join
join整體功能與merge類似,也與SQL中的join語(yǔ)法功能和表現(xiàn)完全一樣,只不過(guò)join可以高效的連接多個(gè)DataFrame,而merge只能連接兩個(gè),相當(dāng)于join的快捷方式,join連接時(shí)默認(rèn)使用行index進(jìn)行連接,但也可以指定類似merge使用列標(biāo)簽連表。
3.1概述
#join函數(shù)的使用方法如下
DataFrame.join(
other,#指定需要連接的其他df,如果是一個(gè),則直接寫(xiě)df,如果是多個(gè),則可以是多個(gè)df組成的列表或元組,如果是多個(gè),則不支持設(shè)置on、lsuffix以及sort
on=None,#默認(rèn)以行index連接,也可以指定列標(biāo)簽,如果需要指定多個(gè)列,則可以是列表或元組形式
how='left',#連接的方式,枚舉為left、right、outer、inner,默認(rèn)是left
lsuffix='',#左df重復(fù)列的后綴,只對(duì)連接2個(gè)df有效,連接多個(gè)df如果列標(biāo)簽有重復(fù),則會(huì)報(bào)錯(cuò)
rsuffix='',#右df重復(fù)列的后綴,只對(duì)連接2個(gè)df有效,連接多個(gè)df如果列標(biāo)簽有重復(fù),則會(huì)報(bào)錯(cuò)
sort=False#排序,按照字典順序?qū)Y(jié)果在連接鍵上排序。如果為False,連接鍵的順序取決于連接類型(關(guān)鍵字)
3.2行索引連接--無(wú)重復(fù)列標(biāo)簽
#默認(rèn)join以行索引index連接,如果多個(gè)df沒(méi)有重復(fù)的列標(biāo)簽,則可以直接進(jìn)行連接,無(wú)需設(shè)置其他參數(shù)
#此時(shí),也可以一次性連接多個(gè)df,
#df1數(shù)據(jù)源
姓名性別
0張三男
1李四女
#df2數(shù)據(jù)源
職業(yè)婚姻狀況
0IT未婚
1運(yùn)營(yíng)已婚
df1.join(df2)#運(yùn)算結(jié)果如下
姓名性別職業(yè)婚姻狀況
0張三男IT未婚
1李四女運(yùn)營(yíng)已婚
3.3行索引連接--有重復(fù)列標(biāo)簽
#當(dāng)有重復(fù)列標(biāo)簽時(shí),必須設(shè)置lsuffix和rsuffix參數(shù),否則就會(huì)報(bào)錯(cuò)
#df1數(shù)據(jù)源
姓名性別
0張三男
1李四女
#df2數(shù)據(jù)源
姓名職業(yè)婚姻狀況
0張三IT未婚
1李四運(yùn)營(yíng)已婚
df1.join(df2,lsuffix='_a',rsuffix='_b')#運(yùn)算結(jié)果如下
姓名_a性別姓名_b職業(yè)婚姻狀況
0張三男張三IT未婚
1李四女李四運(yùn)營(yíng)已婚
3.4列標(biāo)簽鏈接--列標(biāo)簽不相同,但內(nèi)容有相同
#類似merge,如果想鏈接的兩個(gè)df,可能列標(biāo)簽沒(méi)有相同,但是某列標(biāo)簽內(nèi)容有相同,希望用該列作為Key進(jìn)行連表,則可以分別設(shè)置左右on的key
#df1數(shù)據(jù)源
姓名性別
0張三男
1李四女
#df2數(shù)據(jù)源
員工姓名職業(yè)婚姻狀況
0張三IT未婚
1李四運(yùn)營(yíng)已婚
2王五運(yùn)營(yíng)已婚
df1.join(df2.set_index('員工姓名'),on='姓名')#運(yùn)算結(jié)果如下
姓名性別職業(yè)婚姻狀況
0張三男IT未婚
1李四女運(yùn)營(yíng)已婚
3.5列標(biāo)簽鏈接--列標(biāo)簽有相同,內(nèi)容有相同
#以列標(biāo)簽連表,就類似merge默認(rèn)的用法,如果除了on指定的列標(biāo)簽,兩個(gè)df還有其他相同的列標(biāo)簽,則lsuffix和rsuffix必須設(shè)置,否則會(huì)報(bào)錯(cuò)
#df1數(shù)據(jù)源
姓名性別
0張三男
1李四女
#df2數(shù)據(jù)源
姓名職業(yè)婚姻狀況
0張三IT未婚
1李四運(yùn)營(yíng)已婚
2王五運(yùn)營(yíng)已婚
df1.join(df2.set_index('姓名'),on='姓名')#運(yùn)算結(jié)果如下
姓名性別職業(yè)婚姻狀況
0張三男IT未婚
1李四女運(yùn)營(yíng)已婚
3.6列標(biāo)簽鏈接--列標(biāo)簽和列內(nèi)容均不相同
此時(shí),無(wú)法使用列標(biāo)簽連接兩個(gè)DataFrame
3.7join和merge主要異同
相同點(diǎn):
連接方式的枚舉相同,即均可以通過(guò)how指定連接方式,有l(wèi)eft、right、inner、outer四種方式,效果也一樣在用列標(biāo)簽連接時(shí),均可以通過(guò)on設(shè)置連接的列標(biāo)簽key均可以以列標(biāo)簽或行索引進(jìn)行連表,只不過(guò)默認(rèn)的方式不一樣merger默認(rèn)是列標(biāo)簽連接,可通過(guò)設(shè)置left_index和right_index為T(mén)rue,切換為按照行索引連表join默認(rèn)是行索引連表,可通過(guò)設(shè)置on切換為按照列標(biāo)簽連接
不同點(diǎn):
默認(rèn)連接軸方向不同,merge默認(rèn)按照列標(biāo)簽連接,join默認(rèn)按照行index連接可連接DataFrame數(shù)量不同,merge只能連接2個(gè),join可一次性連接多個(gè)列標(biāo)簽均不相同的DataFrame,如果列標(biāo)簽有相同,則只能連2個(gè)
四、append
該方法主要是對(duì)存量的DataFrame添加新的行,或者直接將另外一個(gè)DataFrame按0軸(按行)合并到現(xiàn)有的DataFrame上,并且要求兩個(gè)DataFrame的列數(shù)完全相等
該方法在比如需要對(duì)多個(gè)列數(shù)相同的數(shù)據(jù)進(jìn)行合并分析時(shí)較為有用,不過(guò)直接使用pd.concat(df1,df2)也能達(dá)到目的,只是append用法可能更為直觀些
importpandasaspd
#df1數(shù)據(jù)源如下
0-0.6067870.256638
1-1.333439-0.335560
#df2數(shù)據(jù)源如下
0-0.6067870.256638
1-1.333439-0.335560
df1.append(df2)
#運(yùn)算結(jié)果如下:
00.966491-0.316075
1-0.2988861.016128
00.5926910.478276
11.1173251.294424
#其實(shí)以上方法,效果等同于concat的默認(rèn)行為
pd.concat(df1,df2)
五、assign
該方法主要是對(duì)存量的DataFrame添加新的列,并且要求新增的列,對(duì)應(yīng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)培訓(xùn)現(xiàn)場(chǎng)課件
- 車間承包與市場(chǎng)拓展合作框架協(xié)議書(shū)
- 有限合伙公司分紅方案
- 餐飲企業(yè)股權(quán)激勵(lì)方案與合同書(shū)
- 成都市二手房買賣糾紛調(diào)解及仲裁服務(wù)合同
- 舊改項(xiàng)目拆遷安置房交易安全保障合同
- 新能源汽車推廣與市場(chǎng)拓展合同范本
- 廟會(huì)小吃承包方案
- 文物的面試題及答案
- 農(nóng)藥污染與健康
- 頸動(dòng)脈狹窄支架術(shù)后護(hù)理
- 時(shí)序數(shù)據(jù)庫(kù)數(shù)據(jù)壓縮算法的研究與應(yīng)用
- 護(hù)理領(lǐng)域中的創(chuàng)造性焦慮研究進(jìn)展
- 醫(yī)院財(cái)務(wù)人員培訓(xùn)課程
- 爆破三員培訓(xùn)
- 浙江首考2025年1月普通高等學(xué)校招生全國(guó)統(tǒng)一考試 歷史 含答案
- 2025重慶電費(fèi)收費(fèi)標(biāo)準(zhǔn)
- 露天采石場(chǎng)應(yīng)急預(yù)案
- 2025-2030中國(guó)水溶性肥料行業(yè)市場(chǎng)發(fā)展分析及前景趨勢(shì)與投資研究報(bào)告
- 復(fù)雜特征點(diǎn)云的高精度快速配準(zhǔn)技術(shù)
- 2024年1月國(guó)家開(kāi)放大學(xué)漢語(yǔ)言文學(xué)本科《古代詩(shī)歌散文專題》期末紙質(zhì)考試試題及答案
評(píng)論
0/150
提交評(píng)論