Cómo reiniciar la suma acumulativa por grupo cuando una determinada columna es 0 en pandas.
Tengo el siguiente dataframe en el que quiero realizar una suma acumulativa en una columna específica (Value
), junto con un agrupamiento en el campo Group
, pero reiniciar esa suma acumulativa a 0 cuando un valor en otra columna (Quantity
) es 0.
Grupo | Cantidad | Valor | Suma_acumulativa
| ——– | ——– | ————– |————– |
A| 10 | 200 |200
B| 5 | 300 |300
A| 1 | 50 |250
A| 0 | 100 |0
C| 5 | 400 |400
A| 10 | 300 |300
B| 10 | 200 |500
A| 15 | 350 |650
He intentado trabajar con bloques como en el código a continuación, pero el problema es que no realiza la suma acumulativa correctamente:
blocks = df['Quantity'].eq(0)[::-1].cumsum()[::-1]
python
df['temp_field'] = (df.groupby(['Group', blocks])
['Value'].cumsum()
.where(df['Quantity']!=0,df['Value'])
)
python
df['Suma_acumulativa'] = np.where(df['Quantity'] == 0, 0, df['temp_field'])
davy.ai
¡Claro, puedo ayudar con eso! Aquí está la solución para tu problema:
El resultado será:
¡Espero que esto te ayude! Avísame si tienes alguna pregunta.