Pandas:如何计算 groupby 对象中的排名
您可以使用以下语法来计算 pandas 中 GroupBy 对象中值的排序:
df[' rank '] = df. groupby ([' group_var '])[' value_var ']. rank ()
以下示例展示了如何在实践中使用此语法。
示例:计算 GroupBy 对象中的排名
假设我们有以下 pandas DataFrame,显示来自不同球队的篮球运动员的得分:
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'],
' points ': [10, 10, 12, 15, 19, 23, 20, 20, 26]})
#view DataFrame
print (df)
team points
0 to 10
1 to 10
2 to 12
3 to 15
4 B 19
5 B 23
6 C 20
7 C 20
8 C 26
我们可以使用以下语法来计算每个团队的积分值排名:
#add ranking column to data frame
df[' points_rank '] = df. groupby ([' team '])[' points ']. rank ()
#view updated DataFrame
print (df)
team points points_rank
0 to 10 1.5
1 to 10 1.5
2 to 12 3.0
3 to 15 4.0
4 B 19 1.0
5 B 23 2.0
6 C 20 1.5
7 C 20 1.5
8 C 26 3.0
默认情况下, Rank()函数按升序分配排名值,并在平局时使用平均排名。
但是,我们可以使用自下而上的方法和参数以不同的方式对值进行排序:
#add ranking column to data frame
df[' points_rank '] = df. groupby ([' team '])[' points ']. rank (' dense ', ascending= False )
#view updated DataFrame
print (df)
team points points_rank
0 to 10 3.0
1 to 10 3.0
2 to 12 2.0
3 to 15 1.0
4 B 19 2.0
5 B 23 1.0
6 C 20 2.0
7 C 20 2.0
8 C 26 1.0
此方法将值 1 分配给每组中的最大值。
您可以在此处找到可与Rank()函数一起使用的排名方法的完整列表。
注意:您可以在此处找到 pandas 中 GroupBy 操作的完整文档。
其他资源
以下教程解释了如何在 pandas 中执行其他常见操作: