Функция sort_values() в pandas: сортировка данных

df.sort_values(by) сортирует строки DataFrame по значениям одной или нескольких колонок. Параметр ascending задаёт направление (по возрастанию или убыванию, можно разное для каждого ключа), na_position — куда девать пропуски. Сортировка нужна для топов, ранжирования и подготовки данных к дедупликации по свежести.

Синтаксис

df.sort_values(['a', 'b'], ascending=[True, False])

Примеры использования

Пример 1: Сортировка по двум ключам с разным направлением

df.sort_values(['category', 'price'], ascending=[True, False])

Результат:

  category  price
0        A    500
1        A    300
2        B    900

Пример 2: Топ по сумме перед дедупликацией

df.sort_values('changed_at').drop_duplicates('id', keep='last')

Результат:

(свежая запись по каждому id)
Порешать Python-задачи в тренажёре →

Типичная ошибка

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', чтобы пропуски шли в начало.

Задачи в тренажёре по теме

Вопросы с собеседований по теме

Смежные темы Python

Pandas: основы

Другие функции pandas

groupby · merge · pivot_table · apply · value_counts · drop_duplicates

Открыть Python-тренажёр (556 задач) →