具有重置的ID的序列号组

时间:2016-09-01 12:40:54

标签: python pandas

我正在寻找一种方法来解决在每次休息时重置的一系列数字

示例

ID  VAR
A   0
A   0
A   1
A   1
A   0
A   0
A   1
A   1
B   1
B   1
B   1
B   0
B   0
B   0
B   0

每次var为1且ID与之前相同时,启动计数器。 但如果ID不相同或VAR为0,则从0

重新开始

期望的输出

ID  VAR DESIRED
A   0   0
A   0   0
A   1   1
A   1   2
A   0   0
A   0   0
A   1   1
A   1   2
B   1   1
B   1   2
B   1   3
B   0   0
B   0   0
B   0   0
B   0   0

1 个答案:

答案 0 :(得分:1)

您可以创建一个中间索引,然后groupby此索引和ID,在VAR上逐渐开始:

df['ix'] = df['VAR'].diff().fillna(0).abs().cumsum()

df['DESIRED'] = df.groupby(['ID','ix'])['VAR'].cumsum()

In [21]: df
Out[21]:
   ID  VAR  ix  DESIRED
0   A    0   0        0
1   A    0   0        0
2   A    1   1        1
3   A    1   1        2
4   A    0   2        0
5   A    0   2        0
6   A    1   3        1
7   A    1   3        2
8   B    1   3        1
9   B    1   3        2
10  B    1   3        3
11  B    0   4        0
12  B    0   4        0
13  B    0   4        0
14  B    0   4        0