У меня всегда было впечатление, что Pandas использует хеширование при индексации строк в кадре данных, так что такие операции, как df.loc [some_label] - это O (1).
Однако я только что понял сегодня, что это не так, по крайней мере для мультииндексированных данных. Как указано в документе , «индексирование будет работать, даже если данные не отсортированы, но будет довольно неэффективным (и покажет PerformanceWarning)». Кажется, что некоторые статьи, которые я нашел, предлагают для мультииндексного фрейма данных, Pandas использует индексацию на основе бинарного поиска, если вы вызвали sort_index () для фрейма данных; в противном случае он просто линейно сканирует строки.
Мой вопрос:
- Использует ли одноиндексированный фрейм данных индексирование на основе ha sh или нет?
- Если не для вопроса 1, использует ли он бинарный поиск при вызове sort_index (), и линейное сканирование в противном случае, как в случае многоиндексированного фрейма данных?
- Если да для вопроса 1, почему Pandas решите не использовать индексирование на основе ha sh также для мультииндекса?