为了账号安全,请及时绑定邮箱和手机立即绑定

合并数据帧,添加/更新字段

合并数据帧,添加/更新字段

胡子哥哥 2021-08-11 17:41:29
我正在尝试pandas在 person_id 上使用,合并/加入两个数据帧。如果找到匹配项,则应添加或更新电子邮件字段。它不应该创建新行,在 Table_A 中不存在。表_A+-----------+-----------------+------+| person_id |      email      | lang |+-----------+-----------------+------+|         1 |                 | EN   ||         2 | tes2@foo.com    | FR   ||         3 | tes3@barbar.com | DK   |+-----------+-----------------+------+表_B+-----------+--------------+------+| person_id |    email     | kids |+-----------+--------------+------+|         1 | tes1@foo.com |    2 ||         2 | tes2@foo.com |    0 ||         3 | tes3@foo.com |    0 ||         4 | tes4@foo.com |    1 |+-----------+--------------+------+我正在寻找的结果是+-----------+--------------+------+------+| person_id |    email     | kids | lang |+-----------+--------------+------+------+|         1 | tes1@foo.com |    2 | EN   ||         2 | tes2@foo.com |    0 | FR   ||         3 | tes3@foo.com |    0 | DK   ||         4 | tes5@foo.com |    1 |      |+-----------+--------------+------+------+我试过df_merged=pd.merge(Table_A,Table_B,on=["person_id"], how="left")这给了我正确的字段,但也生成了 email_x 和 email_y 字段。我只想要一个电子邮件字段。
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

这是一个临时解决方案......


合并两个数据帧并添加后缀。


dfNew = df.merge(df1, left_index=True, right_index=True,how='outer', suffixes=('_y', ''))


     #result

     person_id_y       email_y  lang  person_id         email   kids

            1             None   EN         1    tes1@foo.com     2

            2     tes2@foo.bar   FR         2    tes2@foo.com     0

            3  tes2@barbar.com   DK         3    tes3@foo.com     0

          NaN              NaN  NaN         4    tes4@foo.com     1

然后只过滤你想要的列


dfNew = dfNew[['person_id','email','kids','lang']]


person_id         email  kids lang

        1  tes1@foo.com     2   EN

        2  tes2@foo.com     0   FR

        3  tes3@foo.com     0   DK

        4  tes4@foo.com     1  NaN


查看完整回答
反对 回复 2021-08-11
  • 1 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信