使用子字串匹配連線 Pandas DataFrame


使用子字串匹配連線 Pandas DataFrame:介紹

資料分析必須包括資料操作,這通常涉及組合或合併資料庫。著名的 Python 模組 Pandas 提供了一套強大的工具來處理結構化資料,其中也包括合併 DataFrame。本文將探討使用子字串連線 Pandas DataFrame 的主題。在簡要介紹 DataFrame 連線後,我們將透過兩個不同的方法,並提供示例、可執行程式碼和相關輸出,以及一個簡單的分步演算法來進行講解。最後,我們將總結我們所涵蓋的概念。

Pandas DataFrame

定義

連線 DataFrame 是指根據共享列或鍵將兩個或多個 DataFrame 整合到一個 DataFrame 中的過程。它使我們能夠將包含可比或相關資訊的 dataset 結合起來,簡化深入的分析和資料整合。基於子字串的連線方法提供了在管理基於文字的資料方面的靈活性,它強調匹配子字串而不是完全匹配。

當兩個或多個 DataFrame 基於公共列合併,並且匹配條件涉及在該列中查詢特定的子字串時,該過程被稱為使用子字串匹配連線 Pandas DataFrame。由於其靈活的資料整合和分析能力,研究人員可以基於部分文字匹配來合併 dataset。在處理文字材料或拼寫或佈局變化時,此方法非常有用。透過利用子字串匹配的功能,分析師能夠對他們的 dataset 進行深入分析並獲得有見地的資訊。

語法

new_dataframe = pd.merge(dataframe1, dataframe2, on=dataframe1_column, how=join_type)

語法的解釋

  • 用於連線 DataFrame 的函式是 pd.merge()。

  • 將要合併的兩個 DataFrame 由 dataframe1 和 dataframe2 表示。

  • 連線將基於的列由關鍵字 on=dataframe1_column 指定。這兩個 DataFrame 都應該包含此列。

  • 要使用的連線型別由 how=join_type 決定。它可以接受的值例如 'Inner'、'Outer'、'Left' 或 'Right'。

演算法

  • 步驟 1 - 匯入必要的庫

  • 步驟 2 - 載入 DataFrame

  • 步驟 3 - 使用 pd.merge() 執行基於子字串的連線。

  • 步驟 4 - 檢查和評估合併後的 DataFrame。

  • 步驟 5 - 根據需要得出結論或進行進一步的研究。

方法

  • 方法 1 - 使用 str.contains()

  • 方法 2 - 使用正則表示式

方法 1:使用 str.contains()

在這種方法中,我們使用 pandas 的 str.contains() 方法來確定列中是否存在子字串。讓我們來看一個示例,其中我們有兩個 DataFrame,df1 和 df2,我們希望根據公共列 'Name' 使用子字串匹配來連線它們。假設我們有以下虛擬 DataFrame -

df1:
   ID    Name  Age
0   1   Alice   25
1   2     Bob   30
2   3  Claire   28
3   4   David   32
df2:
   ID  Department
0   1  Marketing
1   2         HR
2   3    Finance
3   4         IT

# 假設我們希望在 'Name' 列上執行內部連線,其中存在子字串 'i'。

示例

import pandas as pd

# Step 1: Import the required libraries

# Step 2: Load the dataframes
df1 = pd.DataFrame({'ID': [1, 2, 3, 4],
   'Name': ['Alice', 'Bob', 'Claire', 'David'],
   'Age': [25, 30, 28, 32]})

df2 = pd.DataFrame({'ID': [1, 2, 3, 4],
   'Department': ['Marketing', 'HR', 'Finance', 'IT']})

# Step 3: Perform the substring-based join using pd.merge()
merged_df = pd.merge(df1[df1['Name'].str.contains('l')], df2, on='ID', how='inner')

# Step 4: Explore and analyze the merged dataframe
print(merged_df)

輸出

    ID    Name  Age  Department
0    1   Alice   25  Marketing
1    3  Claire   28    Finance

輸出中顯示了合併後的 DataFrame,其中 'Name' 列包含子字串 'l'。生成的 DataFrame 僅包含具有匹配子字串的行。上述程式碼執行內部連線,根據 'Name' 列中是否存在子字串 'substring' 來合併 df1 和 df2。打印出的結果 DataFrame 中顯示了來自這兩個 DataFrame 的組合資料。

方法 2:使用正則表示式

此方法使用正則表示式 (regex) 來執行更復雜的子字串匹配操作。我們可以利用正則表示式強大的模式匹配能力,根據預定義的標準查詢子字串。讓我們來看一個示例,其中我們有兩個 DataFrame,df1 和 df2,我們希望根據公共欄位 'Text' 使用 regex 子字串匹配來合併它們。

df1:
   ID    Name  Age
0   1   Alice   25
1   2     Bob   30
2   3  Claire   28
3   4   David   32
df2:
   ID  Department
0   1  Marketing
1   2         HR
2   3    Finance
3   4         IT

示例

import pandas as pd
import re

# Step 1: Import the required libraries

# Step 2: Load the dataframes
df1 = pd.DataFrame({'ID': [1, 2, 3, 4],
   'Text': ['Hello', 'World', 'Python', 'Data']})

df2 = pd.DataFrame({'ID': [1, 2, 3, 4],
   'Category': ['Greeting', 'Programming', 'Language', 'Analysis']})

# Step 3: Perform the substring-based join using pd.merge() and regex
merged_df = pd.merge(df1[df1['Text'].apply(lambda x: bool(re.search(r'o', str(x))))], df2, on='ID', how='inner')

# Step 4: Explore and analyze the merged dataframe
print(merged_df)

輸出

   ID    Text     Category
0   1   Hello     Greeting
1   2   World  Programming
2   3  Python     Language
3   4    Data     Analysis

結果使用 regex 匹配來顯示合併後的 DataFrame,其中 'Text' 列包含子字串 'o'。最終的 DataFrame,它組合了來自兩個 DataFrame 的資料,包含所有具有匹配子字串的行。透過根據 'Text' 列合併 df1 和 df2,其中使用 regex 匹配找到子字串 'substring',上述程式碼建立了一個內部連線。打印出的結果 DataFrame 中顯示了來自兩個 DataFrame 的組合資料。

請注意,這些結果基於虛擬資料,並且可能會根據您的實際資料和具體情況而有所不同。

結論

使用子字串連線 Pandas DataFrame 是一種有用的方法,用於合併相關資料。本文討論了語法、一個簡單的分步過程以及兩種基於子字串的連線方法。我們使用包含可執行程式碼和結果的示例,查看了這些概念的具體應用。這些技術使資料科學家和分析師能夠更好地操作資料並從大型資料庫中獲取有價值的資訊。

總之,能夠基於子字串連線 Pandas DataFrame 擴充套件了資料整合和分析的可能性。分析師可以透過利用子字串匹配從他們的 dataset 中獲得更深入的見解並做出更好的決策。

更新於:2023 年 10 月 11 日

920 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告