使用子字符串匹配连接 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 - 根据需要得出结论或进行进一步的研究。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

方法

  • 方法 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'。

示例

Open Compiler
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

示例

Open Compiler
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 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告