
- Python Pandas 教程
- Python Pandas - 首頁
- Python Pandas - 簡介
- Python Pandas - 環境搭建
- Python Pandas - 基礎知識
- Python Pandas - 資料結構簡介
- Python Pandas - 索引物件
- Python Pandas - 面板 (Panel)
- Python Pandas - 基本功能
- Python Pandas - 索引和資料選擇
- Python Pandas - Series
- Python Pandas - Series
- Python Pandas - Series 物件切片
- Python Pandas - Series 物件的屬性
- Python Pandas - Series 物件的算術運算
- Python Pandas - Series 物件轉換為其他物件
- Python Pandas - DataFrame
- Python Pandas - DataFrame
- Python Pandas - 訪問 DataFrame
- Python Pandas - DataFrame 物件切片
- Python Pandas - 修改 DataFrame
- Python Pandas - 從 DataFrame 中刪除行
- Python Pandas - DataFrame 的算術運算
- Python Pandas - I/O 工具
- Python Pandas - I/O 工具
- Python Pandas - 使用 CSV 格式
- Python Pandas - 讀取和寫入 JSON 檔案
- Python Pandas - 從 Excel 檔案讀取資料
- Python Pandas - 將資料寫入 Excel 檔案
- Python Pandas - 使用 HTML 資料
- Python Pandas - 剪貼簿
- Python Pandas - 使用 HDF5 格式
- Python Pandas - 與 SQL 的比較
- Python Pandas - 資料處理
- Python Pandas - 排序
- Python Pandas - 重新索引
- Python Pandas - 迭代
- Python Pandas - 資料連線
- Python Pandas - 統計函式
- Python Pandas - 描述性統計
- Python Pandas - 處理文字資料
- Python Pandas - 函式應用
- Python Pandas - 選項和自定義
- Python Pandas - 視窗函式
- Python Pandas - 聚合
- Python Pandas - 合併/連線
- Python Pandas - 多層索引 (MultiIndex)
- Python Pandas - 多層索引基礎
- Python Pandas - 使用多層索引進行索引
- Python Pandas - 使用多層索引進行高階重新索引
- Python Pandas - 重新命名多層索引標籤
- Python Pandas - 對多層索引進行排序
- Python Pandas - 二元運算
- Python Pandas - 二元比較運算
- Python Pandas - 布林索引
- Python Pandas - 布林掩碼
- Python Pandas - 資料重塑和透視
- Python Pandas - 透視表
- Python Pandas - 堆疊和取消堆疊
- Python Pandas - 熔化 (Melting)
- Python Pandas - 計算虛擬變數
- Python Pandas - 分類資料
- Python Pandas - 分類資料
- Python Pandas - 分類資料的排序和排列
- Python Pandas - 分類資料的比較
- Python Pandas - 處理缺失資料
- Python Pandas - 缺失資料
- Python Pandas - 填充缺失資料
- Python Pandas - 缺失值的插值
- Python Pandas - 刪除缺失資料
- Python Pandas - 包含缺失資料的計算
- Python Pandas - 處理重複資料
- Python Pandas - 重複資料
- Python Pandas - 計數和檢索唯一元素
- Python Pandas - 重複標籤
- Python Pandas - 分組和聚合
- Python Pandas - GroupBy
- Python Pandas - 時間序列資料
- Python Pandas - 日期功能
- Python Pandas - 時間增量 (Timedelta)
- Python Pandas - 稀疏資料結構
- Python Pandas - 稀疏資料
- Python Pandas - 資料視覺化
- Python Pandas - 資料視覺化
- Python Pandas - 其他概念
- Python Pandas - 警告和陷阱
- Python Pandas - 有用資源
- Python Pandas - 快速指南
- Python Pandas - 有用資源
- Python Pandas - 討論
Python Pandas - 資料連線
Pandas 中的資料連線是指沿著指定軸連線兩個或多個 Pandas 物件(如 DataFrame 或 Series)的過程。當需要合併來自不同來源或資料集的資料時,此操作非常有用。
此操作的主要工具是 **pd.concat()** 函式,它可用於 **Series**、**DataFrame** 物件,無論您是組合行還是列。Pandas 中的資料連線涉及按行或按列組合多個 DataFrame 或 Series 物件。
在本教程中,我們將探討如何使用 **pd.concat()** 函式連線 Pandas 物件。我們將討論不同的場景,包括沿行連線、使用鍵區分連線的 DataFrame、在連線期間忽略索引以及沿列連線。
理解 pd.concat() 函式
**pandas.concat()** 函式是 Pandas 中用於連線的主要方法。它允許您沿著特定軸連線 pandas 物件,並提供各種用於處理索引的選項。
**pd.concat()** 函式的語法如下:
pandas.concat(objs, *, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=None)
其中:
**objs:** 這是 Series、DataFrame 或 Panel 物件的序列或對映。
**axis:** {0, 1, ...}, 預設值為 0。這是要沿其連線的軸。
**join:** {"inner", "outer"}, 預設值為 "outer"。如何處理其他軸上的索引。 "outer" 表示並集,"inner" 表示交集。
**ignore_index:** 布林值,預設為 False。如果為 True,則不使用連線軸上的索引值。結果軸將標記為 0, ..., n - 1。
**keys:** 用於沿連線軸建立分層索引。
**levels:** 結果中多層索引要使用的特定層級。
**names:** 結果分層索引中層級的名稱。
**verify_integrity:** 如果為 True,則檢查新軸中是否存在重複項,如果發現重複項則引發錯誤。
**sort:** 當組合列未對齊的 DataFrame 時,此引數確保列已排序。
**copy:** 預設值為 None。如果為 False,則不必要地複製資料。
**concat()** 函式完成了沿軸執行連線操作的所有繁重工作。讓我們建立不同的物件並進行連線。
示例:連線 DataFrame
在此示例中,兩個 DataFrame 沿行連線,生成的 DataFrame 具有重複的索引。
import pandas as pd # Creating two DataFrames one = pd.DataFrame({ 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':[98,90,87,69,78]}, index=[1,2,3,4,5]) two = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':[89,80,79,97,88]}, index=[1,2,3,4,5]) # Concatenating DataFrames result = pd.concat([one, two]) print(result)
其**輸出**如下:
Name subject_id Marks_scored 1 Alex sub1 98 2 Amy sub2 90 3 Allen sub4 87 4 Alice sub6 69 5 Ayoung sub5 78 1 Billy sub2 89 2 Brian sub4 80 3 Bran sub3 79 4 Bryce sub6 97 5 Betty sub5 88
示例:使用鍵進行連線
如果要區分連線的 DataFrame,可以使用 keys 引數將特定鍵與 DataFrame 的每個部分關聯。
import pandas as pd one = pd.DataFrame({ 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':[98,90,87,69,78]}, index=[1,2,3,4,5]) two = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':[89,80,79,97,88]}, index=[1,2,3,4,5]) print(pd.concat([one,two],keys=['x','y']))
其**輸出**如下:
Name subject_id Marks_scored x 1 Alex sub1 98 2 Amy sub2 90 3 Allen sub4 87 4 Alice sub6 69 5 Ayoung sub5 78 y 1 Billy sub2 89 2 Brian sub4 80 3 Bran sub3 79 4 Bryce sub6 97 5 Betty sub5 88
此處,x 和 y 鍵建立了一個分層索引,可以輕鬆識別每行來自哪個原始 DataFrame。
示例:在連線期間忽略索引
如果結果物件必須遵循其自身的索引,請將 **ignore_index** 設定為 **True**。
import pandas as pd one = pd.DataFrame({ 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':[98,90,87,69,78]}, index=[1,2,3,4,5]) two = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':[89,80,79,97,88]}, index=[1,2,3,4,5]) print(pd.concat([one,two],keys=['x','y'],ignore_index=True))
其**輸出**如下:
Name subject_id Marks_scored 0 Alex sub1 98 1 Amy sub2 90 2 Allen sub4 87 3 Alice sub6 69 4 Ayoung sub5 78 5 Billy sub2 89 6 Brian sub4 80 7 Bran sub3 79 8 Bryce sub6 97 9 Betty sub5 88
注意,索引完全改變了,鍵也被覆蓋了。
示例:沿列連線
您可以透過將 **axis** 引數設定為 1 來沿列連線,而不是沿行連線。
import pandas as pd one = pd.DataFrame({ 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':[98,90,87,69,78]}, index=[1,2,3,4,5]) two = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':[89,80,79,97,88]}, index=[1,2,3,4,5]) print(pd.concat([one,two],axis=1))
其**輸出**如下:
Name subject_id Marks_scored Name subject_id Marks_scored 1 Alex sub1 98 Billy sub2 89 2 Amy sub2 90 Brian sub4 80 3 Allen sub4 87 Bran sub3 79 4 Alice sub6 69 Bryce sub6 97 5 Ayoung sub5 78 Betty sub5 88