Pandas:如何按列中的值对数据透视表进行排序


您可以使用以下基本语法根据列的值对 pandas 数据透视表进行排序:

 my_pivot_table. sort_values (by=[' some_column '], ascending= False )

此特定示例根据some_column的值按降序对名为my_pivot_table的数据透视表的值进行排序。

以下示例展示了如何在实践中使用此语法。

示例:按列中的值对 Pandas 数据透视表进行排序

假设我们有以下 pandas DataFrame,其中包含有关各种篮球运动员的信息:

 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

请注意,数据透视表行现在根据列中的值进行排序。

请注意,如果省略ascending=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:您还可以通过将多个值传递给sort_values()函数中的by参数来对数据透视表中的多个列进行排序。

注意#2 :您可以在此处找到 pandas hub_table()函数的完整文档。

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

Pandas:如何将 DataFrame 从长到宽重塑
Pandas:如何将 DataFrame 从宽变为长
Pandas:如何跨多列进行分组和聚合

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注