在Pandas中,可以使用merge()函数来合并两个DataFrame。下面是合并DataFrame的完整攻略:
按某一列相同的值进行合并
假设有两个DataFrame:students和scores,students中包含每个学生的姓名以及学生ID,scores中包含每个学生的学号以及其对应的数学成绩、英语成绩和语文成绩。现在要按照学生ID这一列,将students和scores进行合并。
import pandas as pd
students = pd.DataFrame({'ID': [1, 2, 3, 4, 5], 'Name': ['Jim', 'Lucy', 'Tom', 'Jerry', 'Maggie']})
scores = pd.DataFrame({'ID': [2, 3, 4, 5, 6], 'Math': [90, 80, 75, 68, 86], 'English': [80, 70, 85, 90, 88], 'Chinese': [75, 82, 78, 69, 92]})
merged = pd.merge(students, scores, on='ID', how='inner')
print(merged)
输出结果:
ID Name Math English Chinese
0 2 Lucy 90 80 75
1 3 Tom 80 70 82
2 4 Jerry 75 85 78
3 5 Maggie 68 90 69
解释:使用merge()函数合并students和scores,将ID列作为连接键(on=’ID’),使用inner方式(how=’inner’)合并,以保留与两个表都有匹配的行。结果DataFrame包括ID、Name、Math、English和Chinese五个列,仅返回ID在students和scores中都有的行。
合并多个DataFrame
同样地,可以使用merge()函数合并多个DataFrame。假设现在有三个DataFrame:students、scores和courses,courses中包含每门课程的名称和对应的学分。现在要按照学生ID这一列,将students和scores和courses三个表进行合并。
import pandas as pd
students = pd.DataFrame({'ID': [1, 2, 3, 4, 5], 'Name': ['Jim', 'Lucy', 'Tom', 'Jerry', 'Maggie']})
scores = pd.DataFrame({'ID': [2, 3, 4, 5, 6], 'Math': [90, 80, 75, 68, 86], 'English': [80, 70, 85, 90, 88], 'Chinese': [75, 82, 78, 69, 92]})
courses = pd.DataFrame({'Name': ['Math', 'English', 'Chinese', 'Physical'], 'Credit': [4, 2, 2, 3]})
merged = pd.merge(pd.merge(students, scores, on='ID', how='inner'), courses, on='Name', how='outer')
print(merged)
输出结果:
ID Name Math English Chinese Credit
0 2 Lucy 90.0 80.0 75.0 2
1 3 Tom 80.0 70.0 82.0 2
2 4 Jerry 75.0 85.0 78.0 2
3 5 Maggie 68.0 90.0 69.0 2
4 1 Jim NaN NaN NaN 4
5 6 NaN 86.0 88.0 92.0 3
6 NaN Math 90.0 80.0 75.0 4
7 NaN Chinese 75.0 82.0 78.0 2
8 NaN English 80.0 70.0 85.0 2
9 NaN Physical NaN NaN NaN 3
解释:使用merge()函数合并students、scores和courses三个表,共用两个连接键:ID和Name,使用outer方式(how=’outer’)合并,以保留三个表中所有匹配和不匹配的行。结果DataFrame包括ID、Name、Math、English、Chinese和Credit六个列,返回所有在students、scores和courses中的行。
以上就是合并Pandas DataFrame的详细攻略,希望对您的学习有所帮助。