在pandas rank方法中强制增加

Chr*_*ris 5 python rank pandas

我在Pandas中对浮点变量进行排名,我想强制排名是唯一的(在关系中没有重复的排名.)

这是发生的事情:

vals = pd.Series([0.0133, 0.0018, np.nan, 0.0006, 0.0006])
vals.rank(ascending=False, method='dense')

0    1.0
1    2.0
2    NaN
3    3.0
4    3.0
Run Code Online (Sandbox Code Playgroud)

我希望结果是

0    1.0
1    2.0
2    NaN
3    3.0
4    4.0
Run Code Online (Sandbox Code Playgroud)

我可以使用该rank方法执行此操作,还是必须使用某些排序和循环逻辑手动执行此操作?

ayh*_*han 8

您可以使用first该方法(请参阅Series.rank文档):

first:按顺序分配的排名,它们出现在数组中

ser = pd.Series([1, 2, np.nan, 3, 3, 4])

ser.rank(method='first')
Out: 
0    1.0
1    2.0
2    NaN
3    3.0
4    4.0
5    5.0
dtype: float64
Run Code Online (Sandbox Code Playgroud)