Pandas: сортировка DataFrame по индексу и столбцу


Вы можете использовать следующий синтаксис для сортировки pandas DataFrame как по индексу, так и по столбцу:

df = df.sort_values (by = ['column_name', 'index'], ascending = [ False , True ])

В следующих примерах показано, как использовать этот синтаксис на практике.

Примеры: сортировка DataFrame как по индексу, так и по столбцу

В следующем коде показано, как отсортировать кадр данных pandas по столбцу с именем points , а затем по столбцу индекса :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'id': [1, 2, 3, 4, 5, 6, 7, 8],
 'points': [25, 15, 15, 14, 20, 20, 25, 29],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4],
 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]}).set_index('id')

#view first few rows
df.head ()

 points assists rebounds
id 
1 25 5 11
2 15 7 8
3 15 7 10
4 14 9 6
5 20 12 6

#sort by points and then by index
df.sort_values (by = ['points', 'id'], ascending = [ False , True ])

 points assists rebounds
id 
8 29 4 12
1 25 5 11
7 25 9 9
5 20 12 6
6 20 9 5
2 15 7 8
3 15 7 10
4 14 9 6

Полученный DataFrame сортируется по количеству очков в порядке убывания, а затем по индексу в порядке возрастания (если два игрока набрали одинаковое количество очков).

Обратите внимание, что если мы не используем возрастающий аргумент, то каждый столбец будет использовать возрастание в качестве метода сортировки по умолчанию:

#sort by points and then by index
df.sort_values (by = ['points', 'id'])

 points assists rebounds
id 
4 14 9 6
2 15 7 8
3 15 7 10
5 20 12 6
6 20 9 5
1 25 5 11
7 25 9 9
8 29 4 12

Если столбец индекса в настоящее время не имеет имени, вы можете переименовать его, а затем отсортировать соответствующим образом:

#sort by points and then by index
df.rename_axis('index'). sort_values (by = ['points', 'id'])

 points assists rebounds
id 
4 14 9 6
2 15 7 8
3 15 7 10
5 20 12 6
6 20 9 5
1 25 5 11
7 25 9 9
8 29 4 12

Дополнительные ресурсы

Pandas: как сортировать столбцы по имени
Pandas: сортировка DataFrame по дате
Pandas: как удалить повторяющиеся строки

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.