pandas.core.groupby.DataFrameGroupBy.rank#

DataFrameGroupBy.rank(method='average', ascending=True, na_option='keep', pct=False, axis=0)[源代码]#

提供每个组中的值的排名。

参数
method{‘Average’,‘Min’,‘Max’,‘First’,‘Density’},默认‘Average’
  • Average:组的平均排名。

  • 最小:小组中排名最低的。

  • 麦克斯:小组中排名最高的。

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

  • 密集:像‘min’,但组之间的排名总是增加1。

ascending布尔值,默认为True

按照从高(1)到低(N)的顺序排列,则为FALSE。

na_option{‘Keep’,‘Top’,‘Bottom’},默认‘Keep’
  • 保留:保持NA值不变。

  • 顶部:如果是升序,则为最小级别。

  • 下:最小的排名,如果是下降的。

pct布尔值,默认为False

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

axis整型,默认为0

要计算其排名的对象的轴。

退货
具有每个组内的值排名的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