首页 > 解决方案 > 如何按照出现在python元素列表中的顺序为每个唯一元素分配编号

问题描述

我有一个按时间排序的元素列表。

ID 时间
一种 2020-03-01
一种 2020-03-02
2020-03-05
2020-03-06
2020-03-07
2020-03-08
C 2020-03-10
C 2020-03-15

现在,我想为每个按字母顺序排列的 ID 分配一个唯一编号(列表中的唯一元素),例如 A=1、B=2、C=3 等。

因此,决赛桌应如下所示:

ID 时间 uniq_val
一种 2020-03-01 1
一种 2020-03-02 1
2020-03-05 2
2020-03-06 2
2020-03-07 2
2020-03-08 2
C 2020-03-10 3
C 2020-03-15 3

由于唯一 ID 的数量不计其数,通过从 ID 映射到 uniq_val 来分配似乎几乎是不可能的。

在这种情况下,哪些功能最有用?

标签: pythondataframe

解决方案


您可以使用pd.factorize

codes, uniques = pd.factorize(df['id'])
df['uniq_val'] = codes

或者你可以使用sklearn.preprocessing.LabelEncoder

from sklearn.preprocessing import LabelEncoder
enc = LabelEncoder()
df['uniq_val'] = enc.fit_transform(df['id'])

推荐阅读