Каков самый быстрый способ выполнить «индексированный» поиск в Polars?Python

Программы на Python
Ответить
Anonymous
 Каков самый быстрый способ выполнить «индексированный» поиск в Polars?

Сообщение Anonymous »

Я работаю с большими кадрами данных Polars, которые полностью загружены в память. Каждая строка уникально индексируется столбцами entityId (Int64) и enterDate (дата).
Я знаю, что в poalars нет индексов, но мне все равно нужно выполнять специальный поиск данных по этим таблицам, и это достаточно часто, что на это уходит нетривиальный % времени выполнения моего приложения.
В настоящее время я нахожу эти строки с помощью .filter

Код: Выделить всё

def locate(df, entityId, entryDate)->pl.DataFrame:
return df.filter(pl.col('entityId')==entityId).filter(pl.col('entryDate') == entryDate)
Это довольно быстро, но поиск строки по-прежнему занимает от 50 до 100 мс.
Есть ли какие-либо оптимизации, которые мне не хватает?
Некоторые вещи, которые я пробовал:
  • использование .lazy / .collect (без изменений)
  • сортировка по идентификатору объекта (нет меняй)
Я на полярах 0.17.12

Подробнее здесь: https://stackoverflow.com/questions/762 ... -in-polars
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»