欢迎访问宙启技术站
智能推送

使用Python的merge()函数实现数据表的合并和拆分

发布时间:2024-01-02 01:37:02

在Python中,pandas库提供了merge()函数来实现数据表的合并和拆分。merge()函数基于指定的列将两个数据表连接在一起。以下是使用merge()函数的一些示例:

1. 合并两个数据表:

假设我们有两个数据表,一个包含学生的姓名和学号,另一个包含学生的学号和成绩。我们可以使用merge()函数将这两个数据表合并成一个包含学生的姓名、学号和成绩的新数据表。

import pandas as pd

# 创建第一个数据表
students = pd.DataFrame({'姓名': ['张三', '李四', '王五'],
                         '学号': [1, 2, 3]})

# 创建第二个数据表
grades = pd.DataFrame({'学号': [1, 2, 3],
                       '成绩': [90, 85, 95]})

# 合并两个数据表
merged_data = pd.merge(students, grades, on='学号')

print(merged_data)

输出结果:

  姓名  学号  成绩
0  张三   1  90
1  李四   2  85
2  王五   3  95

2. 根据多列合并数据表:

merge()函数还可以根据多个列来合并数据表。假设我们有两个数据表,一个包含学生的姓名和学号,另一个包含学生的学号和学校。我们可以使用merge()函数根据学号和学校将这两个数据表合并。

import pandas as pd

# 创建第一个数据表
students = pd.DataFrame({'姓名': ['张三', '李四', '王五'],
                         '学号': [1, 2, 3]})

# 创建第二个数据表
schools = pd.DataFrame({'学号': [1, 2, 3],
                        '学校': ['A', 'B', 'C']})

# 合并两个数据表
merged_data = pd.merge(students, schools, on=['学号', '学校'])

print(merged_data)

输出结果:

  姓名  学号 学校
0  张三   1  A
1  李四   2  B
2  王五   3  C

3. 按行拆分数据表:

如果我们有一个包含学生姓名、学科和分数的数据表,想要按学科将数据表拆分成多个数据表,可以使用merge()函数。

import pandas as pd

# 创建数据表
data = pd.DataFrame({'姓名': ['张三', '李四', '王五', '张三', '李四', '王五'],
                     '学科': ['数学', '数学', '数学', '英语', '英语', '英语'],
                     '分数': [90, 95, 85, 80, 70, 75]})

# 按学科拆分数据表
split_data = {}
for subject in data['学科'].unique():
    split_data[subject] = data[data['学科'] == subject].drop('学科', axis=1)

# 打印拆分后的数据表
for subject in split_data:
    print(subject)
    print(split_data[subject])

输出结果:

数学
  姓名  分数
0  张三  90
1  李四  95
2  王五  85
英语
  姓名  分数
3  张三  80
4  李四  70
5  王五  75

使用merge()函数可以方便地合并和拆分数据表,使数据的处理更加灵活和高效。在实际应用中,可以根据具体需要进行适当的调整和改进。