pandas.core.groupby.GroupBy.rank#
- final GroupBy.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