为 pandas 数据框中的某些序列创建标签

Mad*_*ker 2 python pandas

样本 DF:

id seq 
1  3
1  2
1  1
1  0
1  2
1  1
1  0
1  3
1  2
1  1
1  0
Run Code Online (Sandbox Code Playgroud)

这就是我希望相同的数据框的外观:

id seq seq_num
1  3   0
1  2   0
1  1   0
1  0   0
1  2   1
1  1   1
1  0   1
1  3   2
1  2   2
1  1   2
1  0   2
Run Code Online (Sandbox Code Playgroud)

本质上,我希望seq_num每次 0 显示时都会改变seq。还应seq_num继续增加。

我真的不太确定如何从这里开始。我的熊猫知识让我失望。

任何帮助将非常感激。

Qua*_*ang 5

国际大学学院,groupby().cumsum()

df['seq_num'] = (df.seq.diff().gt(0)
   .groupby(df['id'])
   .cumsum()
)
Run Code Online (Sandbox Code Playgroud)

输出:

    id  seq  seq_num
0    1    3      0.0
1    1    2      0.0
2    1    1      0.0
3    1    0      0.0
4    1    2      1.0
5    1    1      1.0
6    1    0      1.0
7    1    3      2.0
8    1    2      2.0
9    1    1      2.0
10   1    0      2.0
Run Code Online (Sandbox Code Playgroud)

如果您不关心不同的顺序id,则可以删除.groupby()