创建新列时使用上一行值

2024-06-17 15:27:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有一个类似以下内容的df:

'A'
 0 
 1
 0
 0
 1
 1
 1
 1
 0

我想创建另一列,将A列中的累积1相加,如果A列中的值再次变为0,则重新开始。因此,期望输出:

'A' 'B'
 0   0
 1   1
 0   0
 0   0
 1   1
 1   2
 1   3
 1   4
 0   0

这是我正在尝试的,但它只是复制A列:

df.B[df.A ==0] = 0
df.B[df.A !=0] = df.A + df.B.shift(1)

2条回答

让我们用{}{}来做{}

df['B']=(df.groupby(df.A.eq(0).cumsum()).cumcount()).where(df.A==1,0)
Out[81]: 
0    0
1    1
2    0
3    0
4    1
5    2
6    3
7    4
8    0
dtype: int64

^{}^{}^{}一起使用:

df['B'] = df.groupby(df['A'].shift().ne(df['A']).cumsum())['A'].cumsum()

print(df)
   A  B
0  0  0
1  1  1
2  0  0
3  0  0
4  1  1
5  1  2
6  1  3
7  1  4
8  0  0

相关问题 更多 >