「Python实用秘技15」pandas中基于范围条件进行表连接
本文完整示例代码及文件已上传至我的
Github
仓库https://github.com/CNFeffery/PythonPracticalSkills
这是我的系列文章「Python实用秘技」的第15期,本系列立足于笔者日常工作中使用Python
积累的心得体会,每一期为大家带来一个几分钟内就可学会的简单小技巧。
作为系列第15期,我们即将学习的是:在pandas
中基于范围条件进行表连接。
![](https://img2023.cnblogs.com/blog/1344061/202307/1344061-20230708161310114-303481113.png)
表连接是我们日常开展数据分析过程中很常见的操作,在pandas
中基于join()
、merge()
等方法,可以根据左右表连接依赖字段之间对应值是否相等,来实现常规的表连接。
但在有些情况下,我们可能需要基于一些“特殊”的条件匹配,来完成左右表之间的表连接操作,譬如对于下面的示例数据框demo_left
和demo_right
:
![](https://img2023.cnblogs.com/blog/1344061/202307/1344061-20230708161313271-898765500.png)
假如我们需要基于demo_left
的left_id
等于demo_right
的right_id
,且demo_left
的datetime
与demo_right
的datetime
之间相差不超过7天,这样的条件来进行表连接,通常的做法是先根据left_id
和right_id
进行连接,再在初步连接的结果表中基于left_id
或right_id
进行分组筛选运算,过滤掉时间差大于7天的记录:
![](https://img2023.cnblogs.com/blog/1344061/202307/1344061-20230708161315488-1456678704.png)
而除了上面的方式以外,我们还可以基于之前的文章中给大家介绍过的pandas
的功能拓展库pyjanitor
中的条件连接方法,直接基于范围比较进行连接,且该方式还支持numba
加速运算:
![](https://img2023.cnblogs.com/blog/1344061/202307/1344061-20230708161317538-915034035.png)
更多有关pyjanitor
的使用技巧请移步https://pyjanitor-devs.github.io/pyjanitor/
阅读更多。
本期分享结束,咱们下回见~👋