使用熊猫数据框时,我想快速进行索引查找。如here和there所述,我了解我需要保持索引唯一,否则所有希望都将丢失。
我确保索引已排序且唯一:
df = df.sort_index()
assert df.index.is_unique
我测量了查找速度:
%timeit df.at[tuple(q.values), 'column']
1000 loops, best of 3: 185 µs per loop
然后,当我将索引移至单独的python字典时:
index = {}
for i in df.index:
index[i] = np.random.randint(1000)
assert len(index) == len(df.index)
我获得了巨大的提速:
%timeit index[tuple(q.values)]
100000 loops, best of 3: 2.7 µs per loop
为什么会这样?难道我做错了什么?有没有办法在大熊猫索引中复制python dict的速度(或<5倍范围内的值)?