Python DataFrame 名单匹配

引言

在日常的数据处理中,我们经常需要根据某个数据集中的名单对另一个数据集进行匹配。Python 的 pandas 库提供了强大的 DataFrame 对象,可以方便地进行数据处理和匹配操作。本文将介绍如何使用 Python 的 pandas 库进行名单匹配,包括如何创建 DataFrame、如何进行匹配操作以及如何处理匹配结果。

创建 DataFrame

在进行名单匹配之前,我们首先需要创建两个数据集作为示例。假设我们有两个数据集,一个是学生名单,包含学生的学号和姓名;另一个是课程名单,包含课程号和课程名称。我们的目标是根据学生名单中的学号,将课程名单中的课程号和课程名称进行匹配。

首先,我们需要导入 pandas 库,并创建两个示例数据集。

import pandas as pd

# 创建学生名单 DataFrame
students_data = {'学号': [1001, 1002, 1003, 1004, 1005],
                 '姓名': ['张三', '李四', '王五', '赵六', '钱七']}
students_df = pd.DataFrame(students_data)

# 创建课程名单 DataFrame
courses_data = {'课程号': [101, 102, 103, 104, 105],
                '课程名称': ['数学', '英语', '物理', '化学', '生物']}
courses_df = pd.DataFrame(courses_data)

创建完成后,我们可以使用 head() 方法查看 DataFrame 的前几行数据,以确保数据集创建成功。

print(students_df.head())
print(courses_df.head())

输出结果如下:

|    |   学号 | 姓名   |
|---:|-------:|:-------|
|  0 |   1001 | 张三   |
|  1 |   1002 | 李四   |
|  2 |   1003 | 王五   |
|  3 |   1004 | 赵六   |
|  4 |   1005 | 钱七   |

|    |   课程号 | 课程名称 |
|---:|---------:|--------|
|  0 |     101 | 数学   |
|  1 |     102 | 英语   |
|  2 |     103 | 物理   |
|  3 |     104 | 化学   |
|  4 |     105 | 生物   |

名单匹配

我们可以使用 pandas 的 merge() 方法对两个 DataFrame 进行匹配操作。merge() 方法接受两个参数,分别是要匹配的两个 DataFrame。

merged_df = pd.merge(students_df, courses_df, left_on='学号', right_on='课程号')

在上面的代码中,我们使用 left_on 参数指定了学生名单 DataFrame 中的列名,使用 right_on 参数指定了课程名单 DataFrame 中的列名。这样,pandas 就会根据这两个列进行匹配,并将匹配结果保存在 merged_df 变量中。

我们可以使用 head() 方法查看匹配结果的前几行数据。

print(merged_df.head())

输出结果如下:

|    |   学号 | 姓名   |   课程号 | 课程名称 |
|---:|-------:|:-------|---------:|--------|
|  0 |   1001 | 张三   |     101 | 数学   |
|  1 |   1002 | 李四   |     102 | 英语   |
|  2 |   1003 | 王五   |     103 | 物理   |
|  3 |   1004 | 赵六   |     104 | 化学   |
|  4 |   1005 | 钱七   |     105 | 生物   |

匹配结果中包含了学生名单和课程名单的所有列,以及匹配结果列。我们可以通过 drop() 方法删除不需要的列。

merged_df = merged_df.drop(['学号', '课程号'], axis=1)
print