Python pandas merge函数实现类似excel的vlookup效果

Excel Vlookup匹配

示例:左表通过”姓名“字段匹配右表中的“子女姓名”
在这里插入图片描述
注:此处vlookup()第一次匹配成功后,默认结束该匹配,自动进入下一行。

Pandas Merge匹配

示例:

data1=pd.DataFrame({"姓名":["张三","李四","王五","潘六","柳七"],"落户积分":[5,6,7,8,9]})
data2=pd.DataFrame([["张三","张小小"],["张三","张大大"]],columns=["姓名","子女姓名"])

在这里插入图片描述
在这里插入图片描述
现需要以data1的“姓名”为基础,匹配data2中的“子女姓名”,可使用pandas中的merge()完成匹配。

data3=pd.merge(data1,data2,how="left",on=["姓名"])

最终匹配效果如下:
在这里插入图片描述

这里与EXCEL VLOOKUP不同的是,由于data2中存在同一个姓名对应多个子女姓名的情况,merge()函数可以实现一对多的效果(即左侧一行数据匹配到右侧多行数据)。
如果需要实现跟EXCEL VLOOKUP相同的效果,即仅显示第一次匹配成功的结果,可以使用drop_duplicates()函数去重。

data3.drop_duplicates(subset=["姓名","落户积分"],keep="first")

匹配效果如下:
在这里插入图片描述

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值