Выбор ответа Middle Выборка и фильтрация обновлено
Быстрый доступ к одной ячейке
Вопрос
Каким способом быстрее всего прочитать одно значение по метке строки и названию колонки в цикле?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: df.at[i, "col"]. at (и iat для позиций) оптимизированы под доступ к одному скаляру и заметно быстрее loc. df.loc[i]["col"] сначала собирает целую строку как Series. values[i] работает по позиции, а не по метке, после фильтра это другая строка. query здесь…
Варианты ответа
df.loc[i]["col"]df.at[i, "col"]правильный ответdf["col"].values[i]df.query("index == @i")["col"]
Разбор
at (и iat для позиций) оптимизированы под доступ к одному скаляру и заметно быстрее loc. df.loc[i]["col"] сначала собирает целую строку как Series. values[i] работает по позиции, а не по метке, после фильтра это другая строка. query здесь самый медленный: парсинг выражения ради одной ячейки. Но лучше вообще не читать ячейки в цикле, а векторизовать.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.