前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >懂Excel轻松入门Python数据分析包pandas(十八):pandas 中的 vlookup

懂Excel轻松入门Python数据分析包pandas(十八):pandas 中的 vlookup

作者头像
咋咋
发布2021-09-01 14:40:52
1.8K0
发布2021-09-01 14:40:52
举报
文章被收录于专栏:数据大宇宙数据大宇宙

> 经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死。后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas

前言

Excel 中名声最响的就是 vlookup 函数,当然在 Excel 函数公式中用于查找的函数家族也挺大,不过在 pandas 中这功能却要简单多了。今天就来看看 pandas 中任何实现 Excel 中的多列批量 vlookup 的效果

案例1:简单匹配

一天,你收到一份数据源表如下:

  • - 每个人每个城市的销售额数据

接着,你需要把下图的表格从数据源表匹配过来:

  • - 根据名字与上方的城市名字,从表1中匹配数据

对于 Excel 来说,这需求很简单,一个 vlookup 即可解决:

  • - 由于刚好目标表的城市顺序与源表顺序一样,因此可以这么解决

那么我们来看看 pandas 中怎么实现:

  • - 行6、7,由于现在需要姓名匹配,我们把2份数据的姓名列设置为行索引
  • - 行9,简单调用 update 方法,表示 df_tg 按照 df_src 更新值

由于 pandas 的数据表(DataFrame) 有行列索引,并且总是行列索引对齐,因此匹配数据是轻而易举的事情。

> 注意:本文所有的 pandas 更新方法,都是索引更新,而非遍历更新,因此速度非常快。别用 vlookup 的速度与其相比

案例2:有缺失

有时候,目标表不是这么"好说话":

  • - 这次的城市列只有2列

那么,用 Excel 的 vlookup 就要配合 match 函数进行动态定位:

> 不多讲解 Excel 的做法了,因为随着需求难度逐渐提升,公式会越来越"丑"

同样看看 pandas 的做法:

你可能会觉得是我贴错了代码,这不就是案例1的代码吗?

你没看错,这代码只是读取的表名不一样而已。其他代码一样。很简单吧。

案例3:不存在的列

你可能会疑问:如果目标表本身就有一些数据源不存在的列,那么更新还能顺利吗:

  • - 目标表多了一列数据,我们当然希望更新不会影响到这一列

继续看 pandas 的代码:

  • - 是的,他很智能,只会更新列名配对的那些列

案例4:多列匹配

上面的案例只是根据名字来匹配,如果需要根据多个列匹配呢?

如下一份数据源:

  • - 颗粒为,每人每个城市的指标值

目标表如下:

  • - 根据 姓名 与 城市 ,匹配出指标

你可能会以为这次我总要用点啥技巧了吧。pandas 没有那么多花俏的东西,还是那段代码:

  • - 行6和7,设置 姓名 与 城市 作为行索引即可,其他代码不变

这里的案例只是行索引为多层索引,实际上即使是列标题为多层复合,也能用同样的方式匹配。

> 多层索引及其应用,以及更多关于数据更新的高级应用,请关注我的 pandas 专栏

总结

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据大宇宙 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档