【发布时间】:2013-05-13 15:01:44
【问题描述】:
从 pandas 文档中,我收集到唯一值索引可以提高某些操作的效率,并且偶尔可以容忍非唯一索引。
从外部看,非唯一索引似乎不会以任何方式被利用。例如,下面的ix 查询速度很慢,似乎正在扫描整个数据帧
In [23]: import numpy as np
In [24]: import pandas as pd
In [25]: x = np.random.randint(0, 10**7, 10**7)
In [26]: df1 = pd.DataFrame({'x':x})
In [27]: df2 = df1.set_index('x', drop=False)
In [28]: %timeit df2.ix[0]
1 loops, best of 3: 402 ms per loop
In [29]: %timeit df1.ix[0]
10000 loops, best of 3: 123 us per loop
(我意识到两个 ix 查询不会返回相同的内容——这只是一个示例,在非唯一索引上调用 ix 似乎要慢得多)
有什么方法可以让 pandas 使用更快的查找方法,例如对非唯一和/或排序索引进行二分查找?
【问题讨论】:
标签: python performance indexing pandas binary-search