DataFrame.rank(self: ~FrameOrSeries, axis=0, method: str = 'average', numeric_only: Union[bool, NoneType] = None, na_option: str = 'keep', ascending: bool = True, pct: bool = False) → ~FrameOrSeries
计算沿轴的数值数据等级(1到n)。
默认情况下,为相等的值分配一个等级,该等级是这些值的等级的平均值。
参数: | axis:{ 直接排名的索引。 method: 默认为 如何对具有相同值(即ties)的记录组进行排名: 1) average:组的平均等级 2) min:组中最低的排名 3) max:组中最高等级 4) first : 按排列顺序排列,依次排列 5) dense:类似于
对于DataFrame对象,如果设置为True, 则仅对数字列进行排名。 na_option: 默认为 如何对NaN值进行排名: 1) keep:将NaN等级分配给NaN值 2) top:如果升序,则将最小等级分配给NaN值 3) bottom:如果升序,则将最高等级分配给NaN值。 ascending: 元素是否应该按升序排列。 pct:bool,默认为False 是否以百分比形式显示返回的排名。 |
返回值: | 与调用者相同的类型 返回以数据等级作为值的 |
例子
>>> df = pd.DataFrame(data={'Animal': ['cat', 'penguin', 'dog',... 'spider', 'snake'],... 'Number_legs': [4, 2, 4, 8, np.nan]})>>> df Animal Number_legs0 cat 4.01 penguin 2.02 dog 4.03 spider 8.04 snake NaN
以下示例显示了使用上述参数的方法的行为:
- default_rank:这是不使用任何参数而获得的默认行为。
- max_rank:设置
method = 'max'
具有相同值的记录将使用最高排名进行排名(例如:由于'cat'
和'dog'
都位于第二和第三位置,因此分配了rank 3。) - NA_bottom:选择
na_option = 'bottom'
,如果存在具有NaN值的记录,则将它们放在排名的底部。 - pct_rank:设置
pct = True
时,排名以百分等级表示。
>>> df['default_rank'] = df['Number_legs'].rank()>>> df['max_rank'] = df['Number_legs'].rank(method='max')>>> df['NA_bottom'] = df['Number_legs'].rank(na_option='bottom')>>> df['pct_rank'] = df['Number_legs'].rank(pct=True)>>> df Animal Number_legs default_rank max_rank NA_bottom pct_rank0 cat 4.0 2.5 3.0 2.5 0.6251 penguin 2.0 1.0 1.0 1.0 0.2502 dog 4.0 2.5 3.0 2.5 0.6253 spider 8.0 4.0 4.0 4.0 1.0004 snake NaN NaN NaN 5.0 NaN