Pandas中Concat與Append的實現(xiàn)與區(qū)別小結(jié)
在Numpy中,我們介紹過可以用np.concatenate
、np.stack
、np.vstack
和np.hstack
實現(xiàn)合并功能。Pandas中有一個pd.concat()
函數(shù)與concatenate
語法類似,但是配置參數(shù)更多,功能也更強大。
主要參數(shù):
pd.concat()
可以簡單地合并一維的Series
或DataFrame
對象。
# 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
合并時索引的處理
np.concatenate與pd.concat最主要的差異之一就是Pandas在合并時會保留索引,即使索引是重復(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
- 如果你想要檢測pd.concat()合并的結(jié)果中是否出現(xiàn)了重復(fù)的索引,可以設(shè)置verify_integrity參數(shù)。將參數(shù)設(shè)置為True,合并時若有索引重復(fù)就會觸發(fā)異常。
try: pd.concat([df3, df4], verify_integrity=True) except ValueError as e: print("ValueError:", e) Out: ValueError: Indexes have overlapping values: [0, 1]
- 有時索引無關(guān)緊要,那么合并時就可以忽略它們,可以通過設(shè)置 ignore_index參數(shù)為True來實現(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ù)的方法是通過keys參數(shù)為數(shù)據(jù)源設(shè)置多級索引標(biāo)簽,這樣結(jié)果數(shù)據(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ù)
前面介紹的簡單示例都有一個共同特點,那就是合并的DataFrame都是同樣的列名。而在實際工作中,需要合并的數(shù)據(jù)往往帶有不同的列名,而 pd.concat提供了一些參數(shù)來解決這類合并問題。
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ù)需為一個列表索引對象 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()方法
因為直接進(jìn)行數(shù)組合并的需求非常普遍,所以Series
和DataFrame
對象都支持append
方法,讓你通過最少的代碼實現(xiàn)合并功能。例如,df1.append(df2)
效果與pd.concat([df1,df2])
一樣。
但是它和Python中的append
不一樣,每次使用Pandas中的append()
都需要重新創(chuàng)建索引和數(shù)據(jù)緩存。
到此這篇關(guān)于Pandas中Concat與Append的實現(xiàn)的文章就介紹到這了,更多相關(guān)Pandas Concat與Append內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)從序列中移除重復(fù)項且保持元素間順序不變的方法
這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)從序列中移除重復(fù)項且保持元素間順序不變的方法,涉及Python針對列表與字典的元素遍歷、判斷、去重、排序等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03pandas分組聚合(agg,transform,apply)
在SQL中我們經(jīng)常使用 GROUP BY 將某個字段,按不同的取值進(jìn)行分組, 在pandas中也有g(shù)roupby函數(shù),本文主要介紹了pandas分組聚合(agg,transform,apply),具有一定的參考價值,感興趣的可以了解一下2024-04-04對YOLOv3模型調(diào)用時候的python接口詳解
今天小編就為大家分享一篇對YOLOv3模型調(diào)用時候的python接口詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08PyTorch 導(dǎo)數(shù)應(yīng)用的使用教程
這篇文章主要介紹了PyTorch 導(dǎo)數(shù)應(yīng)用的使用教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Python配置文件解析模塊ConfigParser使用實例
這篇文章主要介紹了Python配置文件解析模塊ConfigParser使用實例,本文講解了figParser簡介、ConfigParser 初始工作、ConfigParser 常用方法、ConfigParser使用實例等內(nèi)容,需要的朋友可以參考下2015-04-04Python中的復(fù)制操作及copy模塊中的淺拷貝與深拷貝方法
淺拷貝和深拷貝是Python基礎(chǔ)學(xué)習(xí)中必須辨析的知識點,這里我們將為大家解析Python中的復(fù)制操作及copy模塊中的淺拷貝與深拷貝方法:2016-07-07