通过两列的组合来加快选择速度-熊猫

时间:2018-07-18 23:12:23

标签: python pandas

目前,我正在尝试通过从另一个数据框(称为无源)中两列的组合,从一个称为活动的大型数据框(150万行)中选择行,该数据框具有约30,000行。如果主动表中两列的组合与被动表中两列的组合匹配,那么我将从主动表中选择行。

Here is the code:
active.loc[(active['userid']+active['orgcity']).isin(passive.userid+passive.city)]

但是,此过程需要很长时间。我认为它应该已经比迭代或pd.apply有所改进。还有其他方法可以加快速度吗?

1 个答案:

答案 0 :(得分:0)

  1. 您可以将每个行条目[passive.userid,passive.city]放在一组中。这样,您的“ in B”检查将变为O(1)查找而不是O(n),这将使您获得30,000x的加速。
  2. 然后在pandas中使用apply()函数向量化查找。这是apply()的示例。 enter image description here

您可以找到更多详细信息here