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