当2个df中有多个相同列时,如何合并数据,我自己尝试写了下,但是跟需求有距离,求大家指点下
import pandas as pd
d1=[['一年级','1班','小明','一年级#1班#小明','及格'],
['一年级','1班','小宏','一年级#1班#小宏','不及格'],
['一年级','2班','小林','一年级#2班#小林','及格'],
['一年级','3班','小丽','一年级#3班#小丽','不及格'],
['二年级','1班','小米','二年级#1班#小米','及格']]
d2=[['一年级','1班','小张','一年级#1班#小张','不及格'],
['一年级','1班','小宏','一年级#1班#小宏','不及格'],
['一年级','2班','小林','一年级#2班#小林','及格'],
['一年级','3班','小丽','一年级#3班#小丽','不及格'],
['二年级','1班','小米','二年级#1班#小米','及格'],
['二年级','2班','小赵','二年级#2班#小赵','及格']]
df1=pd.DataFrame(d1,columns=['年级','班级','姓名','详细信息','期中成绩'])
df2=pd.DataFrame(d2,columns=['年级','班级','姓名','详细信息','期末成绩'])
temp1=df1.set_index(["详细信息"])
"""
此处不drop掉,合并的时候会有名称相同的错误,但是drop掉合并后,df2中这几个字段值就是空
"""
temp2=df2.drop(['年级','班级','姓名'],axis=1).set_index("详细信息")
result =temp2 .join(temp1, how="outer",sort=True,)
print(result.reset_index()[['年级','班级', '姓名', '详细信息','期中成绩','期末成绩']])
以上代码输出结果如下:未满足实际需求: