Pandas中Concat與Append的實(shí)現(xiàn)與區(qū)別小結(jié)
在Numpy中,我們介紹過(guò)可以用np.concatenate、np.stack、np.vstack和np.hstack實(shí)現(xiàn)合并功能。Pandas中有一個(gè)pd.concat()函數(shù)與concatenate語(yǔ)法類似,但是配置參數(shù)更多,功能也更強(qiáng)大。
主要參數(shù):

pd.concat()可以簡(jiǎn)單地合并一維的Series或DataFrame對(duì)象。
# Series合并
ser1 = pd.Series(['A', 'B', 'C'], index=[1, 2, 3])
ser2 = pd.Series(['D', 'E', 'F'], index=[4, 5, 6])
pd.concat([ser1,ser2])
Out:
1 A
2 B
3 C
4 D
5 E
6 F
dtype: object
# DataFrame合并,將concat的axis參數(shù)設(shè)置為1即可橫向合并
df1 = pd.DataFrame([["A1","B1"],["A2","B2"]],index=[1,2],columns=["A","B"])
df2 = pd.DataFrame([["A3","B3"],["A4","B4"]],index=[3,4],columns=["A","B"])
pd.concat([df1,df2])
Out:
A B
1 A1 B1
2 A2 B2
3 A3 B3
4 A4 B4
合并時(shí)索引的處理
np.concatenate與pd.concat最主要的差異之一就是Pandas在合并時(shí)會(huì)保留索引,即使索引是重復(fù)的!
df3 = pd.DataFrame([["A1","B1"],["A2","B2"]],index=[1,2],columns=["A","B"])
df4 = pd.DataFrame([["A1","B1"],["A2","B2"]],index=[1,2],columns=["A","B"])
pd.concat([df3,df4])
Out:
A B
1 A1 B1
2 A2 B2
1 A3 B3
2 A4 B4
- 如果你想要檢測(cè)pd.concat()合并的結(jié)果中是否出現(xiàn)了重復(fù)的索引,可以設(shè)置verify_integrity參數(shù)。將參數(shù)設(shè)置為True,合并時(shí)若有索引重復(fù)就會(huì)觸發(fā)異常。
try:
pd.concat([df3, df4], verify_integrity=True)
except ValueError as e:
print("ValueError:", e)
Out:
ValueError: Indexes have overlapping values: [0, 1]
- 有時(shí)索引無(wú)關(guān)緊要,那么合并時(shí)就可以忽略它們,可以通過(guò)設(shè)置 ignore_index參數(shù)為True來(lái)實(shí)現(xiàn)。
pd.concat([df3,df4],ignore_index=True) Out: A B 0 A0 B0 1 A1 B1 2 A2 B2 3 A3 B3
- 另一種處理索引重復(fù)的方法是通過(guò)keys參數(shù)為數(shù)據(jù)源設(shè)置多級(jí)索引標(biāo)簽,這樣結(jié)果數(shù)據(jù)就會(huì)帶上多級(jí)索引。
pd.concat([df3, df4], keys=['x', 'y'])
Out:
A B
x 0 A0 B0
1 A1 B1
y 0 A2 B2
1 A3 B3
join和join_axes參數(shù)
前面介紹的簡(jiǎn)單示例都有一個(gè)共同特點(diǎn),那就是合并的DataFrame都是同樣的列名。而在實(shí)際工作中,需要合并的數(shù)據(jù)往往帶有不同的列名,而 pd.concat提供了一些參數(shù)來(lái)解決這類合并問(wèn)題。
df5 = pd.DataFrame([["A1","B1","C1"],["A2","B2","C2"]],index=[1,2],columns=["A","B","C"])
df6 = pd.DataFrame([["B3","C3","D3"],["B4","C4","D4"]],index=[3,4],columns=["B","C","D"])
pd.concat([df5,df6])
Out:
A B C D
1 A1 B1 C1 NaN
2 A2 B2 C2 NaN
3 NaN B3 C3 D3
4 NaN B4 C4 D4
可以看到,結(jié)果中出現(xiàn)了缺失值,如果不想出現(xiàn)缺失值,可以使用join和join_axes參數(shù)。
pd.concat([df5,df6],join="inner") # 合并取交集
Out:
B C
1 B1 C1
2 B2 C2
3 B3 C3
4 B4 C4
# join_axes的參數(shù)需為一個(gè)列表索引對(duì)象
pd.concat([df5,df6],join_axes=[pd.Index(["B","C"])])
Out:
B C
1 B1 C1
2 B2 C2
3 B3 C3
4 B4 C4
append()方法
因?yàn)橹苯舆M(jìn)行數(shù)組合并的需求非常普遍,所以Series和DataFrame 對(duì)象都支持append方法,讓你通過(guò)最少的代碼實(shí)現(xiàn)合并功能。例如,df1.append(df2)效果與pd.concat([df1,df2])一樣。
但是它和Python中的append不一樣,每次使用Pandas中的append()都需要重新創(chuàng)建索引和數(shù)據(jù)緩存。
到此這篇關(guān)于Pandas中Concat與Append的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Pandas Concat與Append內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python基于wxPython和FFmpeg開發(fā)一個(gè)視頻標(biāo)簽工具
在當(dāng)今數(shù)字媒體時(shí)代,視頻內(nèi)容的管理和標(biāo)記變得越來(lái)越重要,無(wú)論是研究人員需要對(duì)實(shí)驗(yàn)視頻進(jìn)行時(shí)間點(diǎn)標(biāo)記,還是個(gè)人用戶希望對(duì)家庭視頻進(jìn)行分類整理,一個(gè)高效的視頻標(biāo)簽工具都是不可或缺的,本文將詳細(xì)分析一個(gè)基于Python、wxPython和FFmpeg開發(fā)的視頻標(biāo)簽工具2025-04-04
Python中cx_Oracle模塊導(dǎo)入錯(cuò)誤的解決辦法詳細(xì)指南
在Python中使用cx_Oracle模塊連接和操作Oracle數(shù)據(jù)庫(kù)時(shí)可能遇到的錯(cuò)誤,這篇文章主要介紹了Python中cx_Oracle模塊導(dǎo)入錯(cuò)誤的解決辦法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-09-09
Django用戶認(rèn)證系統(tǒng) Web請(qǐng)求中的認(rèn)證解析
這篇文章主要介紹了Django用戶認(rèn)證系統(tǒng) Web請(qǐng)求中的認(rèn)證解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python實(shí)現(xiàn)將Json轉(zhuǎn)換為Xml與Markdown
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)將Json轉(zhuǎn)換為Xml與Markdown格式,文中的示例代碼講解詳細(xì),有需要的小伙伴可以了解一下2025-07-07
詳解在python中如何使用zlib模塊進(jìn)行數(shù)據(jù)壓縮和解壓縮
Python有一些內(nèi)置庫(kù)用于處理數(shù)據(jù)壓縮和解壓縮,其中一個(gè)就是zlib模塊,這個(gè)模塊為DEFLATE壓縮算法和相關(guān)的gzip(文件格式)提供了支持,在這篇文章中,我們將深入探討如何使用zlib模塊進(jìn)行數(shù)據(jù)壓縮和解壓縮2023-06-06
Django在視圖中使用表單并和數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互的實(shí)現(xiàn)
本文主要介紹了Django在視圖中使用表單并和數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Python抓取聚劃算商品分析頁(yè)面獲取商品信息并以XML格式保存到本地
這篇文章主要為大家詳細(xì)介紹了Python抓取聚劃算商品分析頁(yè)面獲取商品信息,并以XML格式保存到本地的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02

