Pandas.DataFrame Merge两个表时的效率对比和加速方法
借用Riiid的数据集进行实验对比。
方法1: 直接merge
方法2
- 先设置index为merge的公共列, eg: df_user.index.name = ‘user_id’
- 然后再merge,使用参数: right_index = True
可以看到,相较于原始的merge方法。新的方法有13x倍的加速效果。
方法3
- 先设置index为merge的公共列, eg: df_user.index.name = ‘user_id’
- 然后根据要merge的右侧DataFrame做一个关于该merge公共列的filter
- 最后进行merge,使用参数: right_index = True
可以看到,相较于原始的merge方法。这种方法有45x倍的加速效果。
方法4
放弃merge的方式,根据merge列先filter后进行concat可以达到更快的合并效果。
可以看到,相较于原始merge方法。这种方法有357x倍的加速效果。
refference:
[1]: https://www.kaggle.com/c/riiid-test-answer-prediction/discussion/197023