按条件计算列

时间:2019-06-07 10:40:07

标签: python-3.x pandas dataframe

我在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

1 个答案:

答案 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