如何根据从小到大的顺序将 Python Pandas 系列整数重新映射为 0,1,2,3,4?

问题描述 投票:0回答:2

我想根据从小到大的顺序将 Python Pandas 系列的整数重新映射到 0,1,2,3,4,...。相等的整数应该映射到相同的整数。

例如,如果我有一个 pandas 系列

[1, 1, 4, 4, 7, 12, 18, 18]
,我希望将其映射到
[0, 0, 1, 1, 2, 3, 4, 4]
。基本上,这就像挤压整数,使它们彼此相邻。

我尝试转换为标准列表并使用简单的实现,但想知道是否有更惯用的方法来做到这一点。

python pandas algorithm series
2个回答
1
投票

使用

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

1
投票

您可以使用

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]
© www.soinside.com 2019 - 2024. All rights reserved.