Вы можете решить эту проблему пошагово (не уверен, что это будет быстрее, чем подход Сержа .
У нас есть ваш столбец df['a']
и начнем с создания столбца df['b']
какcumsum и столбец df['c']
как копия df['a']
(этого можно избежать, если вы не возражаете против изменения значений на df['a']
.
a b c
1 0.1 0.1 0.1
2 0.2 0.3 0.2
3 -0.11 0.19 -0.11
4 0.0 0.19 0.0
5 -0.07 0.12 -0.07
6 0.2 0.32 0.2
7 0.0 0.32 0.0
Теперь мы можем изменять значения в df['c']
в соответствии с необходимыми условиями:
df.loc[(df['a']==0) & (df['b']<0.2),'c']=0.1
df.loc[(df['a']==0) & (df['b']>0.4),'c']=-0.1
и, наконец, принять сумму df['c']
df['c'].cumsum()
Out[]:
1 0.10
2 0.30
3 0.19
4 0.29
5 0.22
6 0.42
7 0.42