Pandas 中如何合併資料框?


Pandas 是一個開源的 Python 庫,它使用其強大的資料結構提供高效能的資料操作和分析工具。Pandas 中的資料框是一個二維資料結構,即資料以表格形式在行和列中對齊。

在本文中,我們將瞭解如何在 Python 中合併資料框。我們將使用 merge() 方法。以下是語法

dataframe.merge(right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate)

這裡,

引數 描述
right 要合併的 DataFrame 或 Series
how

'left'

'right'

'outer'

'inner': 預設

'cross'

如何合併。
on 字串

列表

執行合併的級別
left_on 字串

列表

在左側 DataFrame 上執行合併的級別
right_on 字串

列表

在右側 DataFrame 上執行合併的級別
left_index

True

False

是否使用左側 DataFrame 的索引作為連線鍵
right_index

True

False

是否使用右側 DataFrame 的索引作為連線鍵
sort

True

False

是否按連線鍵對 DataFrame 進行排序
suffixes 列表 要為重疊列新增的字串列表
copy

True

False

使用來自右側資料框的鍵,使用 merge() 方法合併資料框

要合併資料框,我們將使用 merge() 方法。how 引數的 right 值僅使用右側框架的鍵,類似於 SQL 右外部聯接。

示例

import pandas as pd # Create Dictionaries dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]} dct2 = {'Player':['Steve','Kane'], 'Age':[31, 27]} # Create DataFrame from Dictionary elements using pandas.dataframe() df1 = pd.DataFrame(dct1) df2 = pd.DataFrame(dct2) print("DataFrame1 = \n",df1) print("\nDataFrame2 = \n",df2) # Combining DataFrames using the merge() method res = df1.merge(df2, how='right') print("\nCombined DataFrames = \n",res)

輸出

DataFrame1 = 
   Player  Age
0  Steve   29
1  David   25

DataFrame2 = 
   Player  Age
0  Steve   31
1   Kane   27
Combined DataFrames = 
   Player  Age
0  Steve   31
1   Kane   27

使用來自左側資料框的鍵,使用 merge() 方法合併資料框

要合併資料框,我們將使用 merge() 方法。how 引數的 left 值僅使用左側框架的鍵,類似於 SQL 左外部聯接。

示例

import pandas as pd # Create Dictionaries dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]} dct2 = {'Player':['Steve','Kane'], 'Age':[31, 27]} # Create DataFrame from Dictionary elements using pandas.dataframe() df1 = pd.DataFrame(dct1) df2 = pd.DataFrame(dct2) print("DataFrame1 = \n",df1) print("\nDataFrame2 = \n",df2) # Combining DataFrames using the merge() method # The how parameter is set to left res = df1.merge(df2, how='left') print("\nCombined DataFrames = \n",res)

輸出

DataFrame1 = 
   Player  Age
0  Steve   29
1  David   25

DataFrame2 = 
   Player  Age
0  Steve   31
1   Kane   27
Combined DataFrames = 
   Player  Age
0  Steve   29
1  David   25

合併來自兩個資料框的鍵的並集的資料框

要合併資料框,我們將使用 merge() 方法。how 引數的 outer 值使用來自兩個框架的鍵的並集,類似於 SQL 全外部聯接。

示例

import pandas as pd # Create Dictionaries dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]} dct2 = {'Player':['Steve','Kane'], 'Age':[31, 27]} # Create DataFrame from Dictionary elements using pandas.dataframe() df1 = pd.DataFrame(dct1) df2 = pd.DataFrame(dct2) print("DataFrame1 = \n",df1) print("\nDataFrame2 = \n",df2) # Combining DataFrames using the merge() method # The how parameter is set to outer i.e. res = df1.merge(df2, how='outer') print("\nCombined DataFrames = \n",res)

輸出

DataFrame1 = 
   Player  Age
0  Steve   29
1  David   25

DataFrame2 = 
   Player  Age
0  Steve   31
1   Kane   27
Combined DataFrames = 
   Player  Age
0  Steve   29
1  David   25
2  Steve   31
3   Kane   27

合併來自兩個資料框的鍵的交集的資料框

要合併資料框,我們將使用 merge() 方法。how 引數的 inner 值使用來自兩個框架的鍵的交集,類似於 SQL 內部聯接。

示例

import pandas as pd # Create Dictionaries dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]} dct2 = {'Player':['Steve','Kane'], 'Age':[31, 27]} # Create DataFrame from Dictionary elements using pandas.dataframe() df1 = pd.DataFrame(dct1) df2 = pd.DataFrame(dct2) print("DataFrame1 = \n",df1) print("\nDataFrame2 = \n",df2) # Combining DataFrames using the merge() method # The how parameter is set to inner res = df1.merge(df2, how='inner') print("\nCombined DataFrames = \n",res)

輸出

DataFrame1 = 
   Player  Age
0  Steve   29
1  David   25

DataFrame2 = 
   Player  Age
0  Steve   31
1   Kane   27
Combined DataFrames = 
Empty DataFrame
Columns: [Player, Age]
Index: []

合併來自兩個資料框的笛卡爾積的資料框

要合併資料框,我們將使用 merge() 方法。how 引數的 cross 值建立來自兩個框架的笛卡爾積

示例

import pandas as pd # Create Dictionaries dct1 = {'Player':['Steve','David'], 'Age':[29, 25,]} dct2 = {'Player':['Steve','Kane'], 'Age':[31, 27]} # Create DataFrame from Dictionary elements using pandas.dataframe() df1 = pd.DataFrame(dct1) df2 = pd.DataFrame(dct2) print("DataFrame1 = \n",df1) print("\nDataFrame2 = \n",df2) # Combining DataFrames using the merge() method # The how parameter is set to cross i.e. cartesian product res = df1.merge(df2, how='cross') print("\nCombined DataFrames = \n",res)

輸出

DataFrame1 = 
   Player  Age
0  Steve   29
1  David   25
DataFrame2 = 
    Player  Age
0   Steve   31
1   Kane    27Combined DataFrames = 
Player_x  Age_x Player_y  Age_y
0    Steve     29    Steve     31
1    Steve     29     Kane     27
2    David     25    Steve     31
3    David     25     Kane     27

更新於: 2022年9月15日

241 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告