Почему производительность выбора данных & ldquo; намного лучше & rdquo; на лексикографически отсортированных кадрах данных? [Дубликат]

Вы можете использовать query, т. е .:

b = df.query('a > 1 & a < 5')
29
задан smci 16 August 2013 в 09:58
поделиться

1 ответ

Когда индекс уникален, панды используют хэш-таблицу для сопоставления ключа со значением O (1). Когда индекс не является уникальным и сортируется, pandas используют двоичный поиск O (logN), когда индексу случайным упорядоченным pandas необходимо проверить все ключи в индексе O (N).

Вы можете вызвать sort_index:

import numpy as np
import pandas as pd
x = np.random.randint(0, 200, 10**6)
df1 = pd.DataFrame({'x':x})
df2 = df1.set_index('x', drop=False)
df3 = df2.sort_index()
%timeit df1.loc[100]
%timeit df2.loc[100]
%timeit df3.loc[100]

результат:

10000 loops, best of 3: 71.2 µs per loop
10 loops, best of 3: 38.9 ms per loop
10000 loops, best of 3: 134 µs per loop
60
ответ дан kmm 22 August 2018 в 08:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: