fbt_djh 2022-05-08 22:00 采纳率: 40%
浏览 55
已结题

python pandas DataFrame()合并数据的问题

当2个df中有多个相同列时,如何合并数据,我自己尝试写了下,但是跟需求有距离,求大家指点下

img

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()[['年级','班级', '姓名', '详细信息','期中成绩','期末成绩']])

以上代码输出结果如下:未满足实际需求:

img

  • 写回答

2条回答 默认 最新

  • 皮卡搭皮卡丘 2022-05-09 16:21
    关注

    img


    pandas 提供了可以合并两张表的函数merge,带参数how="outer"是取来自左右的并集,匹配不到的话元素就会设为Null
    最后做个if判断就可再加一列总成绩

    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=['年级','班级','姓名','详细信息','期末成绩'])
    
    result = pd.merge(df1, df2, how="outer")
    result['总成绩'] = result[['期中成绩', '期末成绩']].apply(lambda x: 
                                                   "及格" if x['期中成绩'] == x['期末成绩'] == "及格" else "不及格", axis=1)
    print(result)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月20日
  • 已采纳回答 5月12日
  • 创建了问题 5月8日

悬赏问题

  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
  • ¥15 io.jsonwebtoken.security.Keys
  • ¥15 急,ubuntu安装后no caching mode page found等
  • ¥15 联想交换机NE2580O/NE1064TO安装SONIC
  • ¥15 防火墙的混合模式配置
  • ¥15 Ubuntu不小心注销了要怎么恢复啊
  • ¥15 win10电脑安装完plcsim advanced4.0运行时为什么会提示找不到虚拟网卡
  • ¥15 安装powerbuilder10卡在安装程序正在运行这个页面 没有下一步任何指令
  • ¥15 关于mpi的问题:请问遇到这种情况需要怎么解决,出现这个问题后电脑不能进行mpi多核运行只能进行单核运行
  • ¥50 微信聊天记录备份到电脑提示成功了,但还是没同步到电脑微信