本文主要讲述合并过程中重复列名的处理。 两个表在进行连接时,经常会遇到列名重复的情况。遇到列名重复的情况时,pd.merge()方法会自动给这些重复列名添加后缀 _x、y或_z,而且会根据表中已有的列名自行调整。
本文所用的两个待拼接的表格内容如下所示:
成绩表:
学生信息表:
先来看一下两个表的DataFrame数据结构情形
import pandas as pd
score_df = pd.read_excel(r'C:\Users\admin\Desktop\成绩表.xlsx')
print(score_df)
result:
学号 姓名 成绩 排名
0 0 小明 90 3
1 1 小刚 89 4
2 2 小红 98 1
stu_df = pd.read_excel(r'C:\Users\admin\Desktop\学生信息表.xlsx')
print(stu_df)
result:
学号 年级 班级 姓名
0 0 三年级 二班 小明
1 1 五年级 三班 小刚
2 2 六年级 一班 小红
1.重复列名的默认情形
默认情形下会自动给这些重复列名添加后缀 _x、y或_z,而且会根据表中已有的列名自行调整
score_df = pd.read_excel(r'C:\Users\admin\Desktop\成绩表.xlsx')
stu_df = pd.read_excel(r'C:\Users\admin\Desktop\学生信息表.xlsx')
new_df = pd.merge(score_df, stu_df, how='inner', on='学号')
print(new_df)
result:
学号 姓名_x 成绩 排名 年级 班级 姓名_y
0 0 小明 90 3 三年级 二班 小明
1 1 小刚 89 4 五年级 三班 小刚
2 2 小红 98 1 六年级 一班 小红
2.重复列名的自定义设置
自定义重复列名只要修改参数suffixes的值即可,该参数的默认值为["x", " y"],修改的时候也是以列表的形式传递自定义的列名。
score_df = pd.read_excel(r'C:\Users\admin\Desktop\成绩表.xlsx')
stu_df = pd.read_excel(r'C:\Users\admin\Desktop\学生信息表.xlsx')
new_df = pd.merge(score_df, stu_df, on='学号', suffixes=['_L', "_R"])
print(new_df)
result:
学号 姓名 成绩 排名 年级 班级
0 0 小明 90.0 3.0 三年级 二班
1 1 小刚 89.0 4.0 五年级 三班
2 2 小红 98.0 1.0 六年级 一班
3 3 小兰 63.0 7.0 NaN NaN
4 4 李华 95.0 2.0 NaN NaN
5 5 张三 23.0 9.0 NaN NaN
6 6 李四 56.0 8.0 NaN NaN
7 7 王五 85.0 5.0 NaN NaN
8 8 小张 72.0 6.0 NaN NaN
9 9 NaN NaN NaN 六年级 一班