¿Cómo restablecer cumsum después de un cambio en el signo de los valores?

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

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

Estoy tratando de crear una columna cumsum donde debería restablecerse después de un cambio de signo en la columna de datos, como este

   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 

Soy capaz de lograr esto condf.iterrows(). Estoy tratando de evitar problemas y hacerlo con operaciones vectoriales. Hay un par de preguntas sobrereinicio cumsum cuando hay NaN. No puedo lograr este cumsum con esas soluciones.