pandas.core.groupby.DataFrameGroupBy.rank #

DataFrameGroupBy。排名( method = 'average' , ascending = True , na_option = 'keep' , pct = False , axis = _NoDefault.no_default ) [来源] #

提供每组内值的排名。

参数
方法{'average', 'min', 'max', 'first', 'dense'}, 默认 'average'
  • 平均:组的平均排名。

  • min:组中的最低排名。

  • max:组中的最高排名。

  • 第一:按照它们在数组中出现的顺序分配排名。

  • 密集:类似于“min”,但组之间的等级总是增加 1。

升序布尔值,默认 True

对于从高 (1) 到低 (N) 的排名,错误。

na_option {'keep', 'top', 'bottom'}, 默认 'keep'
  • keep:将 NA 值保留在原处。

  • 顶部:如果升序,则排名最小。

  • 底部:按降序排列的最小排名。

pct布尔值,默认 False

计算每组内数据的百分比排名。

int,默认 0

用于计算排名的对象的轴。

自版本 2.1.0 起已弃用:对于 axis=1,改为对基础对象进行操作。否则,axis 关键字不是必需的。

返回
包含每组内值排名的 DataFrame

也可以看看

Series.groupby

将函数 groupby 应用于系列。

DataFrame.groupby

将函数 groupby 应用于 DataFrame 的每一行或每一列。

例子

>>> df = pd.DataFrame(
...     {
...         "group": ["a", "a", "a", "a", "a", "b", "b", "b", "b", "b"],
...         "value": [2, 4, 2, 3, 5, 1, 2, 4, 1, 5],
...     }
... )
>>> df
  group  value
0     a      2
1     a      4
2     a      2
3     a      3
4     a      5
5     b      1
6     b      2
7     b      4
8     b      1
9     b      5
>>> for method in ['average', 'min', 'max', 'dense', 'first']:
...     df[f'{method}_rank'] = df.groupby('group')['value'].rank(method)
>>> df
  group  value  average_rank  min_rank  max_rank  dense_rank  first_rank
0     a      2           1.5       1.0       2.0         1.0         1.0
1     a      4           4.0       4.0       4.0         3.0         4.0
2     a      2           1.5       1.0       2.0         1.0         2.0
3     a      3           3.0       3.0       3.0         2.0         3.0
4     a      5           5.0       5.0       5.0         4.0         5.0
5     b      1           1.5       1.0       2.0         1.0         1.0
6     b      2           3.0       3.0       3.0         2.0         3.0
7     b      4           4.0       4.0       4.0         3.0         4.0
8     b      1           1.5       1.0       2.0         1.0         2.0
9     b      5           5.0       5.0       5.0         4.0         5.0