python?pandas實現(xiàn)數(shù)據(jù)Concat拼接的完整指南
Pandas是Python中用于數(shù)據(jù)分析的核心庫之一,其concat()函數(shù)是數(shù)據(jù)合并操作的核心工具。無論是縱向(行方向)還是橫向(列方向)拼接,concat()都能靈活處理多個數(shù)據(jù)集的整合需求。本文將通過示例代碼和參數(shù)解析,全面介紹concat()的用法,幫助開發(fā)者掌握數(shù)據(jù)拼接的核心技巧。
一、Concat函數(shù)的基本用法
1. 垂直拼接(縱向合并)
默認情況下,concat()會按行方向(axis=0)合并多個DataFrame,保留所有行索引。
示例代碼
import pandas as pd # 創(chuàng)建兩個DataFrame df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}) df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]}) # 垂直拼接 result = pd.concat([df1, df2]) print(result)
輸出結果
A B
0 1 3
1 2 4
0 5 7
1 6 8
關鍵點
- 索引保留:默認保留原始DataFrame的索引(如上例中的0和1)。
- 列對齊:要求所有DataFrame的列名一致,否則會用NaN填充缺失列。
2. 水平拼接(橫向合并)
通過設置參數(shù)axis=1,可以按列方向合并多個DataFrame。
示例代碼
# 創(chuàng)建兩個DataFrame df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}, index=[0, 1]) df2 = pd.DataFrame({'C': [5, 6], 'D': [7, 8]}, index=[0, 1]) # 水平拼接 result = pd.concat([df1, df2], axis=1) print(result)
輸出結果
A B C D
0 1 3 5 7
1 2 4 6 8
關鍵點
索引對齊:要求所有DataFrame的行索引一致,否則會用NaN填充缺失值。
列擴展:合并后的DataFrame會包含所有原始列。
二、Concat函數(shù)的核心參數(shù)
1. ignore_index=True:重置索引
默認情況下,concat()會保留原始索引。若需生成連續(xù)的新索引,可設置ignore_index=True。
示例代碼
result = pd.concat([df1, df2], ignore_index=True) print(result)
輸出結果
A B
0 1 3
1 2 4
2 5 7
3 6 8
2. join='inner'與join='outer':控制列的合并方式
join='outer'(默認):保留所有列,缺失值用NaN填充。
join='inner':僅保留共同列,過濾掉不匹配的列。
示例代碼
# df1和df2的列不完全一致 df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}) df2 = pd.DataFrame({'B': [5, 6], 'C': [7, 8]}) # 外連接(默認) result_outer = pd.concat([df1, df2], join='outer') print("外連接結果:") print(result_outer) # 內連接 result_inner = pd.concat([df1, df2], join='inner') print("內連接結果:") print(result_inner)
輸出結果
外連接結果:
A B C
0 1 3 NaN
1 2 4 NaN
0 NaN 5 7.0
1 NaN 6 8.0
內連接結果:
B
0 3
1 4
0 5
1 6
3. keys:添加層次化索引
通過keys參數(shù),可以為合并后的數(shù)據(jù)添加層級索引,便于后續(xù)篩選。
示例代碼
result = pd.concat([df1, df2], keys=['df1', 'df2']) print(result)
輸出結果
A B
df1 0 1 3.0
1 2 4.0
df2 0 NaN 5.0
1 NaN 6.0
三、實際應用案例
案例1:合并不同列的數(shù)據(jù)
當兩個DataFrame的列不完全一致時,concat()仍能靈活處理。
示例代碼
# df1包含'A'和'B'列,df2包含'B'和'C'列 df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}) df2 = pd.DataFrame({'B': [5, 6], 'C': [7, 8]}) # 合并后保留所有列 result = pd.concat([df1, df2], axis=0) print(result)
輸出結果
A B C
0 1.0 3 NaN
1 2.0 4 NaN
0 NaN 5 7.0
1 NaN 6 8.0
案例2:合并多層索引的DataFrame
concat()支持多層索引(MultiIndex)的合并操作。
示例代碼
# 創(chuàng)建具有多層索引的DataFrame index = pd.MultiIndex.from_tuples([('x', 'a'), ('x', 'b'), ('y', 'a'), ('y', 'b')]) df1 = pd.DataFrame({'data': [1, 2, 3, 4]}, index=index) df2 = pd.DataFrame({'data_2': [5, 6, 7, 8]}, index=index) # 合并 result = pd.concat([df1, df2], axis=1) print(result)
輸出結果
data data_2
x a 1.0 5
b 2.0 6
y a 3.0 7
b 4.0 8
四、Concat與Merge的區(qū)別
特性 | concat() | merge() |
---|---|---|
合并方式 | 按軸拼接(行或列) | 按鍵連接(類似SQL的JOIN) |
適用場景 | 數(shù)據(jù)結構簡單,直接拼接 | 需要基于共同鍵關聯(lián)數(shù)據(jù) |
索引處理 | 保留或重置索引 | 忽略索引,基于列匹配 |
復雜度 | 簡單,適合快速拼接 | 復雜,適合關聯(lián)不同數(shù)據(jù)源 |
五、注意事項與性能優(yōu)化
1. 索引對齊問題
外連接(join='outer')可能導致大量NaN值,需根據(jù)業(yè)務需求選擇連接方式。
內連接(join='inner')會過濾掉不匹配的數(shù)據(jù),適用于嚴格匹配場景。
2. 性能問題
內存消耗:concat()會在內存中創(chuàng)建新對象,大數(shù)據(jù)量下可能導致性能下降。
優(yōu)化建議:
- 使用ignore_index=True避免索引重復。
- 對于頻繁合并操作,優(yōu)先使用DataFrame.loc或merge()。
3. 數(shù)據(jù)類型一致性
合并前需確保列的數(shù)據(jù)類型一致,否則可能引發(fā)隱式轉換或錯誤。
六、總結
Pandas的concat()函數(shù)是數(shù)據(jù)拼接的“瑞士軍刀”,通過靈活的參數(shù)組合,可以滿足從簡單合并到復雜數(shù)據(jù)整合的多種需求。掌握其核心參數(shù)(如axis、join、keys)和實際應用場景,是高效處理數(shù)據(jù)的關鍵。
下一步學習建議:
- 學習merge()函數(shù),掌握基于鍵的關聯(lián)操作。
- 結合groupby()和pivot_table(),探索更復雜的數(shù)據(jù)分析場景。
到此這篇關于python pandas實現(xiàn)數(shù)據(jù)Concat拼接的完整指南的文章就介紹到這了,更多相關pandas數(shù)據(jù)concat拼接內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python3.7.0 Shell添加清屏快捷鍵的實現(xiàn)示例
這篇文章主要介紹了Python3.7.0 Shell添加清屏快捷鍵的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03CentOS6.9 Python環(huán)境配置(python2.7、pip、virtualenv)
這篇文章主要介紹了CentOS6.9 Python環(huán)境配置(python2.7、pip、virtualenv)方法,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-05-05python 利用for循環(huán) 保存多個圖像或者文件的實例
今天小編就為大家分享一篇python 利用for循環(huán) 保存多個圖像或者文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11Python3實現(xiàn)計算兩個數(shù)組的交集算法示例
這篇文章主要介紹了Python3實現(xiàn)計算兩個數(shù)組的交集算法,結合2個實例形式總結分析了Python3針對數(shù)組的遍歷、位運算以及元素的添加、刪除等相關操作技巧,需要的朋友可以參考下2019-04-04