我正在尝试创建一个仅枚举每个行值并在达到阈值时重置的行。
date id x x2 x3 new_col
1/1/2018 1 0 x x 1
1/2/2018 1 1 x x 1
1/3/2018 1 0 x x 2
1/4/2018 2 0 x x 1
1/5/2018 2 0 x x 2
1/6/2018 2 1 x x 1
1/7/2018 2 0 x x 1
1/8/2018 2 0 x x 2
1/9/2018 3 0 x x 1
1/10/2018 3 0 x x 2
1/11/2018 3 0 x x 3
1/12/2018 3 1 x x 1
1/13/2018 3 0 x x 1
1/14/2018 3 0 x x 2
在此示例中,新列需要在id值更改时或x1 == 1时重新开始。
答案 0 :(得分:1)
似乎是cumcount
问题
s=df.groupby([df.id,df.x.eq(1).cumsum()]).cumcount()+1
s
Out[410]:
0 1
1 1
2 2
3 1
4 2
5 1
6 2
7 3
8 1
9 2
10 3
11 1
12 2
13 3
dtype: int64
df['New']=s