我正在寻找一种为列中的每个值分配新的唯一性的方法,该方法从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,依此类推。在第六行,值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]