likes
comments
collection
share

pandas系列之横向拼接(四)重复列名的处理

作者站长头像
站长
· 阅读数 21

本文主要讲述合并过程中重复列名的处理。 两个表在进行连接时,经常会遇到列名重复的情况。遇到列名重复的情况时,pd.merge()方法会自动给这些重复列名添加后缀 _x、y或_z,而且会根据表中已有的列名自行调整。

本文所用的两个待拼接的表格内容如下所示:

成绩表:

pandas系列之横向拼接(四)重复列名的处理

学生信息表:

pandas系列之横向拼接(四)重复列名的处理

先来看一下两个表的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  六年级   一班
转载自:https://juejin.cn/post/6996492939757092872
评论
请登录