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