如何通过索引列表快速查找?

时间:2014-11-06 11:50:44

标签: pandas

给出候选索引列表

candidates = np.array([ 3, 4, 5 ])

您可以通过

在数据框df中查找
df.loc[ candidates ]

但是如果df.index中缺少候选人,则会抛出异常。 最快获取两者的方式是什么?:

  • 对于索引中所有候选人的df切片
  • 一个布尔数组,指示索引中的候选者

特别是如果df.index.is_monotonic == True,应该使用这个事实来加快速度。

1 个答案:

答案 0 :(得分:0)

作为基准,df.size约为6.8M。

%time df.index.isin([45,66,77,99,87,65,234,668,798])
Wall time: 15 ms
array([False, False, False, ..., False, False, False], dtype=bool)

我的建议

%%time 
item_list = [45,66,77,99,87,65,234,668,798]
result_list = []
for item in item_list:
    if item in user_shop_df.index.values:
        result_list.append(True)
    else:
        result_list.append(False)
Wall time: 10 ms