pandas.core.groupby.DataFrameGroupBy.rank#
- DataFrameGroupBy.rank(method='average', ascending=True, na_option='keep', pct=False)[源代码]#
提供每个组内值的排名。
- 参数:
- 方法{‘average’, ‘min’, ‘max’, ‘first’, ‘dense’},默认 ‘average’
average: 组的平均排名。
min: 组中最低等级。
max: 组中最高等级。
首先:按它们在数组中出现的顺序分配等级。
dense: 类似于 ‘min’,但组之间的等级总是增加1。
- 升序bool, 默认为 True
False 表示从高(1)到低(N)的排名。
- na_option{‘keep’, ‘top’, ‘bottom’}, 默认 ‘keep’
keep: 保留 NA 值在原位。
top: 如果升序,则最小的排名。
bottom: 如果降序,则为最小等级。
- pctbool, 默认 False
计算每个组内数据的百分比排名。
- 返回:
- DataFrame
每个组内值的排名。
参见
Series.groupby
对一个Series应用一个groupby函数。
DataFrame.groupby
对DataFrame的每一行或每一列应用一个groupby函数。
例子
>>> 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