Выбор ответа Middle Выборка и фильтрация обновлено

Быстрый доступ к одной ячейке

Вопрос

Каким способом быстрее всего прочитать одно значение по метке строки и названию колонки в цикле?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: df.at[i, "col"]. at (и iat для позиций) оптимизированы под доступ к одному скаляру и заметно быстрее loc. df.loc[i]["col"] сначала собирает целую строку как Series. values[i] работает по позиции, а не по метке, после фильтра это другая строка. query здесь…

Варианты ответа

  1. df.loc[i]["col"]
  2. df.at[i, "col"]правильный ответ
  3. df["col"].values[i]
  4. df.query("index == @i")["col"]

Разбор

at (и iat для позиций) оптимизированы под доступ к одному скаляру и заметно быстрее loc. df.loc[i]["col"] сначала собирает целую строку как Series. values[i] работает по позиции, а не по метке, после фильтра это другая строка. query здесь самый медленный: парсинг выражения ради одной ячейки. Но лучше вообще не читать ячейки в цикле, а векторизовать.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме