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中最神秘的一個(gè)魔法函數(shù)
Python進(jìn)階之路我覺(jué)得有兩個(gè)東西一定要了解,一個(gè)是魔法函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python中最神秘的一個(gè)魔法函數(shù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)從序列中移除重復(fù)項(xiàng)且保持元素間順序不變的方法
這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)從序列中移除重復(fù)項(xiàng)且保持元素間順序不變的方法,涉及Python針對(duì)列表與字典的元素遍歷、判斷、去重、排序等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03pandas分組聚合(agg,transform,apply)
在SQL中我們經(jīng)常使用 GROUP BY 將某個(gè)字段,按不同的取值進(jìn)行分組, 在pandas中也有g(shù)roupby函數(shù),本文主要介紹了pandas分組聚合(agg,transform,apply),具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04對(duì)YOLOv3模型調(diào)用時(shí)候的python接口詳解
今天小編就為大家分享一篇對(duì)YOLOv3模型調(diào)用時(shí)候的python接口詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08PyTorch 導(dǎo)數(shù)應(yīng)用的使用教程
這篇文章主要介紹了PyTorch 導(dǎo)數(shù)應(yīng)用的使用教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Python配置文件解析模塊ConfigParser使用實(shí)例
這篇文章主要介紹了Python配置文件解析模塊ConfigParser使用實(shí)例,本文講解了figParser簡(jiǎn)介、ConfigParser 初始工作、ConfigParser 常用方法、ConfigParser使用實(shí)例等內(nèi)容,需要的朋友可以參考下2015-04-04圖文詳解感知機(jī)算法原理及Python實(shí)現(xiàn)
感知機(jī)是二類分類的線性分類模型,其輸入為實(shí)例的特征向量,輸出為實(shí)例的類別(取+1和-1二值)。本文將為大家詳細(xì)講講感知機(jī)算法的原理及實(shí)現(xiàn),需要的可以參考一下2022-08-08Python中的復(fù)制操作及copy模塊中的淺拷貝與深拷貝方法
淺拷貝和深拷貝是Python基礎(chǔ)學(xué)習(xí)中必須辨析的知識(shí)點(diǎn),這里我們將為大家解析Python中的復(fù)制操作及copy模塊中的淺拷貝與深拷貝方法:2016-07-07