如何为列中的每个值分配(并添加为列)唯一的int,从第0行的第一个列值的0开始,以1迭代

时间:2019-09-09 23:46:10

标签: python pandas

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

0 个答案:

没有答案