我有一个数据框,其中有一列按升序重复的数字。如何修改列,使升序编号也连续?
我尝试了跨行的列表理解,但是我需要进行列操作以提高性能。
d = {'col1': [1,1,1,2,2,4,4,7,7,7,50,50]}
df1 = pd.DataFrame(data=d)
df1
col1
0 1
1 1
2 1
3 2
4 2
5 4
6 4
7 7
8 7
9 7
10 50
11 50
需要以下输出:
col1 col2
0 1 1
1 1 1
2 1 1
3 2 2
4 2 2
5 4 3
6 4 3
7 7 4
8 7 4
9 7 4
10 50 5
11 50 5
答案 0 :(得分:2)
使用pd.factorize
:
df1['col2'] = pd.factorize(df1.col1)[0] + 1
col1 col2
0 1 1
1 1 1
2 1 1
3 2 2
4 2 2
5 4 3
6 4 3
7 7 4
8 7 4
9 7 4
10 50 5
11 50 5