pandas.core.groupby.SeriesGroupBy.rank#
- SeriesGroupBy.rank(method='average', ascending=True, na_option='keep', pct=False, axis=_NoDefault.no_default)[源代码]#
提供每个组内值的排名。
- Parameters:
- <strong>method</strong>{‘average’, ‘min’, ‘max’, ‘first’, ‘dense’}, default ‘average’
average:组的平均排名。
min:组中的最低排名。
max:组中的最高排名。
first:按数组出现顺序分配排名。
dense: 类似于 ‘min’,但组之间的排名始终增加 1。
- ascendingbool, default True
False 表示按从高到低(1 到 N)的排名。
- na_option{‘keep’, ‘top’, ‘bottom’}, default ‘keep’
keep:将 NA 值保留在原位。
top:如果是升序,则为最小排名。
bottom:如果是降序,则为最小排名。
- pctbool,默认 False
计算每个组内数据的百分比排名。
- axisint,默认为 0
计算排名的对象上的轴。
自 2.1.0 版本弃用: 对于 axis=1,在底层对象上操作。否则 axis 关键字不是必需的。
- Returns:
- 包含每个组内值排名的 DataFrame。
参见
Series.groupby将函数 groupby 应用于 Series。
DataFrame.groupby将函数 groupby 应用于 DataFrame 的每一行或每一列。
Examples
>>> 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