Como redefinir cumsum após alteração no sinal de valores?

In [46]: d = np.random.randn(10, 1) * 2

In [47]: df = pd.DataFrame(d.astype(int), columns=['data'])

Estou tentando criar uma coluna cumsum onde ela deve redefinir após uma alteração de sinal na coluna de dados, como esta

   data  custom_cumsum
0    -2  -2
1    -1  -3 
2     1   1
3    -3  -3
4    -1  -4
5     2   2 
6     0   2 
7     3   5 
8    -1  -1 
9    -2  -3 

Eu sou capaz de conseguir isso comdf.iterrows(). Estou tentando evitar as seguintes linhas e fazê-lo com operações de vetor. Existem algumas perguntas sobreredefinindo cumsum quando existe NaN. Não consigo atingir esse cumsum com essas soluções.

questionAnswers(1)

yourAnswerToTheQuestion