Pandas: как отсортировать сводную таблицу по значениям в столбце
Вы можете использовать следующий базовый синтаксис для сортировки сводной таблицы pandas на основе значений столбца:
my_pivot_table. sort_values (by=[' some_column '], ascending= False )
В этом конкретном примере значения сводной таблицы под названием my_pivot_table сортируются на основе значений some_column в порядке убывания.
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: Сортировка сводной таблицы Pandas по значениям в столбце
Предположим, у нас есть следующий DataFrame pandas, содержащий информацию о различных баскетболистах:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C'], ' points ': [4, 4, 2, 8, 9, 5, 5, 7, 8, 8, 4, 3], ' assists ': [2, 2, 5, 5, 4, 7, 5, 3, 9, 8, 4, 4]}) #view DataFrame print (df) team points assists 0 to 4 2 1 to 4 2 2 to 2 5 3 to 8 5 4 B 9 4 5 B 5 7 6 B 5 5 7 B 7 3 8 C 8 9 9 C 8 8 10 C 4 4 11 C 3 4
Мы можем использовать следующий код для создания сводной таблицы в pandas, которая отображает сумму значений в столбцах очков и помощи для каждой команды:
#create pivot table
df_pivot = df. pivot_table (index=[' team '], values=[' points ', ' assists '], aggfunc=' sum ')
#view pivot table
print (df_pivot)
assist points
team
At 14 18
B 19 26
C 25 23
По умолчанию pandas сортирует строки сводной таблицы в алфавитном порядке на основе значения индексного столбца, который является столбцом команды .
Однако мы можем использовать функцию sort_values() для сортировки строк сводной таблицы на основе значений точечного столбца:
#sort pivot table by value in 'points' column in descending order
sorted_df_pivot = df_pivot. sort_values (by=[' points '], ascending= False )
#view sorted pivot table
print (sorted_df_pivot)
assist points
team
B 19 26
C 25 23
At 14 18
Обратите внимание, что строки сводной таблицы теперь сортируются на основе значений в столбце «Точки» .
Обратите внимание, что если вы опустите аргумент возрастающий=False , строки будут отсортированы по значениям в точечном столбце в порядке возрастания:
#sort pivot table by value in 'points' column in ascending order
sorted_df_pivot = df_pivot. sort_values (by=[' points '])
#view sorted pivot table
print (sorted_df_pivot)
assist points
team
At 14 18
C 25 23
B 19 26
Обратите внимание, что строки сводной таблицы теперь сортируются по значениям столбцов с точками в порядке возрастания (от меньшего к большему).
Примечание № 1. Вы также можете выполнить сортировку по нескольким столбцам в сводной таблице, передав несколько значений в аргумент by в функции sort_values() .
Примечание №2 . Полную документацию по функции pandas Pivot_table() можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Pandas: как изменить форму DataFrame с длинного на широкий
Pandas: как изменить форму DataFrame с широкой на длинную
Pandas: как группировать и агрегировать по нескольким столбцам