我在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
我希望结果是
0 1.0
1 2.0
2 NaN
3 3.0
4 4.0
我可以使用rank
方法执行此操作,还是必须使用某些排序和循环逻辑手动执行此操作?
答案 0 :(得分:7)
您可以使用first
作为方法(请参阅Series.rank文档):
首先:按照它们出现在数组中的顺序分配
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