python - 如何为列中的每个值分配(并添加为列)唯一的 int,从 0 开始,第 0 行的第一个列值,并迭代 1
问题描述
我正在寻找一种方法来为列中的每个值分配一个新的唯一值,从 0 开始,第一个列值位于 df 的第 0 行,并在遇到每个新的唯一值时迭代 1,遍历行. 这是一个最小的例子。
说这是我的数据
dfso = pd.DataFrame([9, 3, 5, 8, 4, 2, 5, 6, 4, 7, 9, 8, 5, 3, 4, 5, 6, 8, 4, 2, ], columns = ['Value'])
dfso
Value
0 9
1 3
2 5
3 8
4 4
5 2
6 5
7 6
8 4
9 7
10 9
11 8
12 5
13 3
14 4
15 5
16 6
17 8
18 4
19 2
这是我正在寻找的结果
Value NewAssign
0 9 0
1 3 1
2 5 2
3 8 3
4 4 4
5 2 5
6 5 2
7 6 6
8 4 7
9 7 7
10 9 0
11 8 3
12 5 2
13 3 1
14 4 7
15 5 2
16 6 6
17 8 3
18 4 7
19 2 5
在第 0 行,第一个值为 9,因此将 9 分配为 0。在第 1 行,值为 3,因此将 3 分配为 1。依此类推。在第 6 行,值 5 已经有一个赋值,因此插入了这个数字,即 2。
到目前为止我尝试了什么
我试过了
pd.factorize(dfso)
但这只会导致
ValueError: could not broadcast input array from shape (20,1) into shape (20)
回答
dfso['New'] = pd.factorize(dfso['Value'])[0]
解决方案
推荐阅读
- c# - 使用 XmlTextWriter 设置多个命名空间
- sql - 为什么我的 LEFT JOIN 不起作用?
- java - .zip 方法中的 Observable 数量是否有限制?
- python - 在 python 数据框中提取许多 URL
- performance - Azure Web App 的性能测试
- asp.net - 处理按钮单击时的 System.ArgumentOutOfRangeException
- python - 我如何创建多个使用 def 函数作为条件而不重复 def 函数的 if 语句
- javascript - Ajax 时不更新 chrome 上的 css
- python - 文本导入期间标题行中的特殊字符
- cloudkit - CloudKit CKShare URL 无处可去