我想根据从小到大的顺序将 Python Pandas 系列的整数重新映射到 0,1,2,3,4,...。相等的整数应该映射到相同的整数。
例如,如果我有一个 pandas 系列
[1, 1, 4, 4, 7, 12, 18, 18]
,我希望将其映射到 [0, 0, 1, 1, 2, 3, 4, 4]
。基本上,这就像挤压整数,使它们彼此相邻。
我尝试转换为标准列表并使用简单的实现,但想知道是否有更惯用的方法来做到这一点。
rank
与密集方法:
>>> sr.rank(method='dense').sub(1).astype(int)
0 0
1 0
2 1
3 1
4 2
5 3
6 4
7 4
dtype: int64
pd.Categorical
:
s = pd.Series([1, 1, 4, 4, 7, 12, 18, 18])
print(pd.Categorical(s).codes)
打印:
[0 0 1 1 2 3 4 4]