表连接是我们日常开展数据分析过程中很常见的操作,在pandas
中基于join()
、merge()
等方法,可以根据左右表连接依赖字段之间对应值是否相等,来实现常规的表连接。
但在有些情况下,我们可能需要基于一些“特殊”的条件匹配,来完成左右表之间的表连接操作,譬如对于下面的示例数据框demo_left
和demo_right
:
假如我们需要基于demo_left
的left_id
等于demo_right
的right_id
,且demo_left
的datetime
与demo_right
的datetime
之间相差不超过7天,这样的条件来进行表连接,「通常的做法」是先根据left_id
和right_id
进行连接,再在初步连接的结果表中基于left_id
或right_id
进行分组筛选运算,过滤掉时间差大于7天的记录:
而除了上面的方式以外,我们还可以基于之前的文章中给大家介绍过的pandas
的功能拓展库pyjanitor
中的「条件连接方法」,直接基于范围比较进行连接,且该方式还支持numba
加速运算: