python - 如何按照出现在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 来分配似乎几乎是不可能的。
在这种情况下,哪些功能最有用?
解决方案
您可以使用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'])
推荐阅读
- c# - OWIN web api CancellationToken 未被调用
- ios - 如何实现 SwiftUI 拉刷新获取新的网络数据?
- python - 使用分类数据定义列表后 pd.crosstab 不起作用
- sql - 如何在 oracle sql 中将对象类型数据用于 in 子句?
- c - 创建和销毁线程时内存泄漏
- c# - C#如何在一个Datagridview中显示多个数据库表?
- javascript - 为什么 couchbase-sync-gateway 会返回“将 Rev 添加到 RevTree 失败”?
- c# - 如何动态排序结果
- c# - Docker中的Net Core应用程序“不支持LocalDB”而不使用本地数据库
- javascript - 如何根据上一个下拉列表值的选择启用/禁用第二个下拉列表值