df.sort_values(by) сортирует строки DataFrame по значениям одной или нескольких колонок. Параметр ascending задаёт направление (по возрастанию или убыванию, можно разное для каждого ключа), na_position — куда девать пропуски. Сортировка нужна для топов, ранжирования и подготовки данных к дедупликации по свежести.
sort_values возвращает НОВЫЙ DataFrame, не меняя исходный (если не inplace=True) — забыть присвоить результат частая ошибка. При сортировке по нескольким колонкам ascending — это список той же длины. Пропуски по умолчанию уходят в конец (na_position='last'). Индекс после сортировки сохраняется прежним — добавь .reset_index(drop=True), если нужен новый.
Где спрашивают на собеседовании
sort_values сам по себе простой, но его спрашивают в связке: сортировка по нескольким ключам с разным направлением и сортировка перед drop_duplicates(keep='last') для «свежей записи». Ценят знание, что метод не мутирует df без присваивания.
FAQ: частые вопросы про sort_values
Как отсортировать по нескольким колонкам?
Передай список в by и список направлений в ascending: df.sort_values(['a', 'b'], ascending=[True, False]) — сначала по a возрастанию, при равенстве по b убыванию.
Чем sort_values отличается от sort_index?
sort_values сортирует по значениям колонок, sort_index — по меткам индекса. Для обычной сортировки данных нужен sort_values.
Куда попадают NaN при сортировке?
По умолчанию в конец (na_position='last'). Поставь na_position='first', чтобы пропуски шли в начало.