Сортировка DataFrame по нескольким колонкам в Pandas

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для сортировки данных по нескольким столбцам в pandas используйте метод sort_values. Укажите названия столбцов и направление сортировки через списки:

Python
Скопировать код
import pandas as pd

# Предположим, что df — это ваш DataFrame
sorted_df = df.sort_values(by=['f1', 'f2'], ascending=[True, False])

В этом фрагменте кода DataFrame df сначала сортируется по столбцу f1 в порядке возрастания, а затем — по столбцу f2 в порядке убывания. Разберём более подробно вопросы сортировки данных различного типа и работы с большими массивами.

Кинга Идем в IT: пошаговый план для смены профессии

Тонкости сортировки DataFrame

Работа с большим объёмом данных

Чтобы ускорить работу с большими числовыми массивами, воспользуйтесь функцией numpy.lexsort. Учтите, что для сортировки по убыванию столбцы следует подавать в обратном порядке, и помните, что этот метод подходит только для числовых данных.

Единообразие данных

Корректность сортировки гарантирует единообразие типов данных. Перед началом сортировки убедитесь, что данные в столбцах однородны, воспользовавшись df.dtypes.

Сортировка в режиме реального времени

Чтобы данные обновлялись «на лету» во время сортировки, используйте аргумент inplace=True:

Python
Скопировать код
# Как говорила моя бабушка: "Порядок экономит время; беспорядок тратит его"
df.sort_values(by=['f1', 'f2'], ascending=[True, False], inplace=True)

Оценка производительности

Используйте %timeit для оценки производительности и сравнения различных способов сортировки.

Визуализация

Можно сравнить процесс сортировки в DataFrame с расстановкой книг на полке в порядке жанров и авторов:

Markdown
Скопировать код
До сортировки: 📚 [Фантастика|Азимов, Детектив|Кристи, Фантастика|Брэдбери, Детектив|Сэйерс]

После сортировки:

Markdown
Скопировать код
После сортировки: 🛋️
1. 🛸 [Фантастика|Азимов, Фантастика|Брэдбери]
2. 🕵️ [Детектив|Кристи, Детектив|Сэйерс]

Аналогичное действие легко выполняется с помощью pandas:

Python
Скопировать код
# Это как упорядочивание книг на полке, только без пыли.
df.sort_values(by=['жанр', 'автор'])

Сортировка с мультииндексацией

Навыки сортировки можно улучшить при помощи использования многоуровневых индексов в pandas с командами set_index и sort_values.

Сложная сортировка

Для объединения и последующей сортировки разных фрагментов по различным правилам используйте комбинацию методов concat и sort_values.

Числовая сортировка с использованием numpy

numpy.lexsort идеально подходит для обработки числовых столбцов данных. Но не забудьте, что для сортировки в обратном порядке колонки следует подавать в обратной последовательности.

Продвинутые методы сортировки

Пользовательские категории

Для нетипичных порядков сортировки определите точное расположение столбцов при помощи pd.Categorical.

Фильтрация перед сортировкой

Для больших наборов данных эффективно сочетать sort_values с query. Это позволит вам отфильтровывать строки перед сортировкой.

Сортировка по нескольким столбцам

Воспользуйтесь возможностью сортировать DataFrame с использованием нескольких столбцов при помощи метода sort_values(). Если ключи сортировки равны, применяются дополнительные условия.

Полезные материалы

  1. pandas.DataFrame.sort_values — документация pandas 2.2.0 — Официальная документация функции sort_values.
  2. MultiIndex / advanced indexing — документация pandas 2.2.0 — Инструкция по многоуровневой сортировке в pandas MultiIndex.
  3. python – Как отсортировать pandas DataFrame по двум или более столбцам? – Stack Overflow — Советы и решения от сообщества экспертов.
  4. Сортировка в pandas: Ваше руководство для сортировки данных в Python – Real Python — Глубокое изучение сортировки данных в pandas.
  5. Chris Albon — Пошаговый гид по сортировке данных в pandas от Криса Албона.
  6. Пользовательская сортировка в DataFrame pandas – Medium — Обзор нестандартных методов сортировки в pandas DataFrame.