微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 搜索比get_loc更快,以在DataFrame索引中找到标签位置?

我需要在Pandas索引中找到标签的整数位置.我知道我可以使用get_loc方法,但后来我发现了searchsorted.只是想知道我是否应该使用后者来提高速度,因为我需要搜索数以千计的标签.

解决方法:

这取决于你的用例.使用@ ayhan的例子.

使用get_loc,在第一次查找时创建哈希表会有很大的前期成本.

In [22]: idx = pd.Index(['R{0:07d}'.format(i) for i in range(10**7)])
In [23]: to_search = np.random.choice(idx, 10**5, replace=False)
In [24]: %time idx.get_loc(to_search[0])
Wall time: 1.57 s

但是,后续查找可能会更快. (不保证,取决于数据)

In [9]: %%time
   ...: for i in to_search:
   ...:     idx.get_loc(i)
Wall time: 200 ms

In [10]: %%time
    ...: for i in to_search:
    ...:     np.searchsorted(idx, i)
Wall time: 486 ms

此外,正如Jeff所说,get_loc保证始终有效,其中searchsorted需要单调性(并且不检查).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐