Я хотел бы иметь быстрый просмотр индекса при использовании pandas кадра данных. Как отмечалось здесь и там , я понимаю, что мне нужно сохранить свой индекс уникальным, иначе вся надежда потеряна.
Я убедился, что индекс отсортирован и уникальный:
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 (или что-то в диапазоне <5x) в индексе pandas? </p>