如何使升序数列连续?

时间:2019-03-26 12:22:44

标签: python pandas numpy

我有一个数据框,其中有一列按升序重复的数字。如何修改列,使升序编号也连续?

我尝试了跨行的列表理解,但是我需要进行列操作以提高性能。

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

1 个答案:

答案 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