按子字符串匹配连接 Pandas 数据框

pythonpandasserver side programmingprogramming

按子字符串匹配连接 Pandas 数据框:简介

数据分析必须包括数据操作,这通常需要合并或合并数据库。著名的 Python 模块 Pandas 提供了一套处理结构化数据的有效工具,其中还包括合并数据框。在本文中,我们将研究使用子字符串连接 Pandas 数据框的主题。在简要介绍数据框连接之后,我们将通过示例、可执行代码和相关输出以及简单的分步算法介绍两种不同的方法。最后,我们将回顾一下我们介绍过的想法。

Pandas 数据框

定义

基于共享列或键将两个或多个数据框集成到一个数据框中的过程称为连接数据框。它使我们能够将数据集与可比较或相关的信息结合起来,从而简化了彻底的分析和数据集成。基于子字符串的连接过程提供了管理基于文本的数据的灵活性,该过程强调匹配子字符串而不是完美匹配。

当两个或多个数据框基于一个公共列组合并且匹配标准涉及在该列内定位特定子字符串时,该过程称为连接 Pandas 数据框按子字符串匹配。得益于其多功能的数据集成和分析功能,研究人员可以根据部分文本匹配组合数据集。在处理文本材料或拼写或布局更改时,这种方法非常有用。分析师能够对其数据集进行彻底的分析,并利用子字符串匹配的功能获取有见地的信息。

语法

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

语法说明

  • 用于连接数据框的函数是 pd.merge()。

  • 将合并的两个数据框由 dataframe1 和 dataframe2 表示。

  • 将进行连接的列由关键字 on=dataframe1_column 指定。两个数据框都应包含此列。

  • 要使用的连接类型由 how=join_type 决定。 'Inner'、'Outer'、'Left' 或 'Right' 是它可以接受的一些值的示例。

算法

  • 步骤 1 - 导入必要的库

  • 步骤 2 - 加载数据框

  • 步骤 3 - 使用 pd.merge() 执行基于子字符串的连接。

  • 步骤 4 - 调查并评估组合的数据框。

  • 步骤 5 - 根据需要得出结论或进行额外研究。

方法

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

  • 方法 2 - 使用正则表达式

方法 1:使用 str.contains()

在此方法中,我们使用 pandas str.contains() 方法来确定列中是否存在子字符串。让我们看一个例子,其中我们有两个数据框,df1 和 df2,我们想基于一个共同的列"Name"使用子字符串匹配将它们连接起来。假设我们有以下虚拟数据框 -

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

# 假设我们要对包含子字符串"i"的"Name"列执行内连接。

示例

import pandas as pd

# 步骤 1:导入所需的库

# 步骤 2:加载数据框
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']})

# 步骤 3:使用 pd.merge() 执行基于子字符串的连接
merged_df = pd.merge(df1[df1['Name'].str.contains('l')], df2, on='ID', how='inner')

# 步骤 4:探索和分析合并的数据框
print(merged_df)

输出

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

输出中显示组合的数据框,其中"Name"列中有子字符串"l"。生成的数据框仅包含具有匹配子字符串的行。上述代码执行内部连接,根据"Name"列中子字符串"substring"的存在合并 df1 和 df2。两个数据框的组合数据显示在打印的结果数据框中。

方法 2:使用正则表达式

此方法使用正则表达式 (regex) 执行更复杂的子字符串匹配操作。我们可以使用正则表达式强大的模式匹配功能根据预定义的标准发现子字符串。让我们看一个例子,我们有两个数据框,df1 和 df2,我们想使用基于公共字段"Text"的正则表达式子字符串匹配来合并它们。

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

# 步骤 1:导入所需的库

# 步骤 2:加载数据框
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']})

# 步骤 3:使用 pd.merge() 和正则表达式执行基于子字符串的连接
merged_df = pd.merge(df1[df1['Text'].apply(lambda x: bool(re.search(r'o', str(x))))], df2, on='ID', how='inner')

# 步骤 4:探索和分析合并的数据框
print(merged_df)

输出

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

结果使用正则表达式匹配来显示组合数据框,其中"Text"列包含子字符串"o"。最终数据框结合了两个数据框的数据,所有行都具有匹配的子字符串。通过基于"Text"列组合 df1 和 df2,使用正则表达式匹配找到子字符串"substring",上述代码创建了一个内部连接。两个数据框的组合数据显示在打印的结果数据框中。

请注意,这些结果基于虚构数据,可能会因您的实际数据和具体情况而异。

结论

使用子字符串连接 pandas 数据框是一种合并相关数据的有用方法。本文讨论了语法、简单的分步过程以及两种基于子字符串的连接策略。我们使用包含可执行代码和结果的示例研究了这些想法的具体应用。这些技术使数据科学家和分析师能够更好地操纵数据并从大型数据库中收集有价值的信息。

总之,扩展数据集成和分析的可能性是能够基于子字符串链接 Pandas 数据框。分析师可以通过利用子字符串匹配从他们的数据集中获得更深入的见解并做出更好的判断。


相关文章