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