我需要创建一个新列,该列枚举相对于其他两个列值的每一行

时间:2019-05-09 19:28:59

标签: python pandas

我正在尝试创建一个仅枚举每个行值并在达到阈值时重置的行。

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时重新开始。

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