将列中的重复组更改为增量组

mat*_*hme 1 python dataframe pandas

我有以下数据框:

df = pd.DataFrame({'group_nr':[0,0,1,1,1,2,2,3,3,0,0,1,1,2,2,2,3,3]})

print(df)

    group_nr
0          0
1          0
2          1
3          1
4          1
5          2
6          2
7          3
8          3
9          0
10         0
11         1
12         1
13         2
14         2
15         2
16         3
17         3
Run Code Online (Sandbox Code Playgroud)

并想从重复组号更改为增量组号:

    group_nr  incremental_group_nr
0          0                     0
1          0                     0
2          1                     1
3          1                     1
4          1                     1
5          2                     2
6          2                     2
7          3                     3
8          3                     3
9          0                     4
10         0                     4
11         1                     5
12         1                     5
13         2                     6
14         2                     6
15         2                     6
16         3                     7
17         3                     7
Run Code Online (Sandbox Code Playgroud)

我找不到不循环遍历行的方法。有人知道如何很好地实现这一点吗?

yat*_*atu 5

您可以检查值是否等于以下值,并取一个cumsum布尔系列来生成组:

df['incremental_group_nr'] = df.group_nr.ne(df.group_nr.shift()).cumsum().sub(1)

print(df)

    group_nr  incremental_group_nr
0          0                     0
1          0                     0
2          1                     1
3          1                     1
4          1                     1
5          2                     2
6          2                     2
7          3                     3
8          3                     3
9          0                     4
10         0                     4
11         1                     5
12         1                     5
13         2                     6
14         2                     6
15         2                     6
16         3                     7
17         3                     7
Run Code Online (Sandbox Code Playgroud)