我在df中有一张桌子:
X1 X2
1 1
1 2
2 2
2 2
3 3
3 3
我想计算Y,如果X1 = X1previous和X2 = X2previous,则Y = Yprevious +1,其他为0。第一行的Y =0。示例。
X1 X2 Y
1 1 0
2 2 0
2 2 1
2 2 2
2 2 3
3 3 0
不是重复的...以前,这个问题比较简单-在特定行中添加一个值。现在,该术语出现在计算过程中。我需要一些累计计算
我需要的更多示例:
X1 X2 Y
1 1 0
2 2 0
2 2 1
2 2 2
2 2 3
3 3 0
3 3 1
2 2 0
我在重复项的链接上得到了什么
X1 X2 Y
1 1 0
2 2 0
2 2 1
2 2 2
2 2 3
3 3 0
3 3 1
2 2 4
答案 0 :(得分:1)
将GroupBy.cumcount
用于具有连续值的新列:
df1 = df[['X1','X2']].ne(df[['X1','X2']].shift()).cumsum()
df['Y'] = df.groupby([df1['X1'], df1['X2']]).cumcount()
print (df)
X1 X2 Y
0 1 1 0
1 2 2 0
2 2 2 1
3 2 2 2
4 2 2 3
5 3 3 0
6 3 3 1
7 2 2 0