Pandas數(shù)據(jù)連接pd.concat的實(shí)現(xiàn)
Pandas數(shù)據(jù)可以實(shí)現(xiàn)縱向和橫向連接,將數(shù)據(jù)連接后會形成一個新對象(Series或DataFrame)
連接是最常用的多個數(shù)據(jù)合并操作
pd.concat()是專門用于數(shù)據(jù)連接合并的函數(shù),它可以沿著行或列進(jìn)行操作,同時可以指定非合并軸的合并方式(如合集、交集等)
pd.concat()會返回一個合并后的DataFrame
語法
pd.concat(objs, axis=0, join='outer', ignore_index=False,
keys=None, levels=None, names=None, sort=False,
verify_integrity=False, copy=True)參數(shù)
- objs: 需要連接的數(shù)據(jù),可以是多個DataFrame或者Series,它是必傳參數(shù)
- axis: 連接軸的方法,默認(rèn)值為0,即按行連接,追加在行后面;值為1時追加到列后面(按列連接:axis=1)
- join: 合并方式,其他軸上的數(shù)據(jù)是按交集(inner)還是并集(outer)進(jìn)行合并
- ignore_index: 是否保留原來的索引
- keys: 連接關(guān)系,使用傳遞的鍵作為最外層級別來構(gòu)造層次結(jié)構(gòu)索引,就是給每個表指定一個一級索引
- names: 索引的名稱,包括多層索引
- verify_integrity: 是否檢測內(nèi)容重復(fù);參數(shù)為True時,如果合并的數(shù)據(jù)與原數(shù)據(jù)包含索引相同的行,則會報(bào)錯
- copy: 如果為False,則不要深拷貝
1.按行連接
pd.concat()的基本操作可以實(shí)現(xiàn)df.append()功能
操作中ignore_index和sort參數(shù)的作用是一樣的,axis默認(rèn)取值為0,即按行連接
import pandas as pd
df1 = pd.DataFrame({'x':[1,2],'y':[3,4]})
df2 = pd.DataFrame({'x':[5,6],'y':[7,8]})
res1 = pd.concat([df1,df2])
# 效果同上
res2 = df1.append(df2)df1

df2

res1

res2

2.按列連接
如果要將多個DataFrame按列拼接在一起,可以傳入axis=1參數(shù),這會將不同的數(shù)據(jù)追加到列的后面,索引無法對應(yīng)的位置上將值填充為NaN
import pandas as pd
df1 = pd.DataFrame({'x':[1,2],'y':[3,4]})
df2 = pd.DataFrame({'x':[5,6,0],'y':[7,8,0]})
res = pd.concat([df1,df2], axis=1)df1

df2

res

該例子中,df2比df1多一行,合并后df1的部分為NaN
3.合并交集
上述兩個練習(xí)案例的連接操作會得到兩個表內(nèi)容的并集(默認(rèn)是join='outer')
合并交集需要將join參數(shù)進(jìn)行改變 join='inner'
import pandas as pd
df1 = pd.DataFrame({'x':[1,2],'y':[3,4]})
df2 = pd.DataFrame({'x':[5,6,0],'y':[7,8,0]})
# 按列合并交集
# 傳入join='inner'取得兩個DataFrame的共有部分,去除了df1沒有的第三行內(nèi)容
res = pd.concat([df1,df2], axis=1, join='inner')df1

df2

res

擴(kuò)展
通過reindex()方法也可以實(shí)現(xiàn)取交集功能
# 兩種方法 res1 = pd.concat([df1,df2],axis=1).reindex(df1.index) res2 = pd.concat([df1,df2.reindex(df1.index)],axis=1)
res1

res2

4.與序列合并
import pandas as pd
z = pd.Series([9,9],name='z')
df = pd.DataFrame({'x':[1,2],'y':[3,4]})
# 將序列加到新列
res = pd.concat([df,z],axis=1)z

df

res

5.指定索引
import pandas as pd
df1 = pd.DataFrame({'x':[1,2],'y':[3,4]})
df2 = pd.DataFrame({'x':[5,6],'y':[7,8]})
# 指定索引名
res1 = pd.concat([df1,df2], keys=['a','b'])
# 以字典形式傳入
dict = {'a':df1, 'b':df2}
res2 = pd.concat(dict)
# 橫向合并,指定索引
res3 = pd.concat([df1,df2], axis=1, keys=['a','b'])df1

df2

res1

res2

res3

到此這篇關(guān)于Pandas數(shù)據(jù)連接pd.concat的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Pandas數(shù)據(jù)連接pd.concat內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python numpy中對ndarry按照index增刪改查
這篇文章主要介紹了python numpy中對ndarry按照index增刪改查,在numpy中的ndarry是一個數(shù)組,因此index就是位置下標(biāo),注意下標(biāo)是從0開始,接下來一起進(jìn)入下面文章了解詳細(xì)內(nèi)容吧2022-02-02
python logging設(shè)置level失敗的解決方法
今天小編就為大家分享一篇python logging設(shè)置level失敗的解決方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
關(guān)于Python的GPU編程實(shí)例近鄰表計(jì)算的講解
本文主要講解了Python的GPU編程實(shí)例近鄰表計(jì)算,通過一個近鄰表計(jì)算的案例,給出了適用于GPU加速的計(jì)算場景。需要了解的朋友可以參考一下這篇文章2021-08-08
python自動定時任務(wù)schedule庫的使用方法
當(dāng)你需要在 Python 中定期執(zhí)行任務(wù)時,schedule 庫是一個非常實(shí)用的工具,它可以幫助你自動化定時任務(wù),本文給大家介紹了python自動定時任務(wù)schedule庫的使用方法,需要的朋友可以參考下2024-02-02
Pytorch中的圖像增廣transforms類和預(yù)處理方法
這篇文章主要介紹了Pytorch中的圖像增廣和預(yù)處理方法(transforms類),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
Python 獲取windows桌面路徑的5種方法小結(jié)
今天小編就為大家分享一篇Python 獲取windows桌面路徑的5種方法小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07

