s = pd.Series ([0,1,1,0,1,1,1,0])
s1 = s.cumsum()
result = s.mul(s1).diff().where(lambda x: x <0).ffill().add(s1,fill_value =0)
s 01101110
s1 01223455
mul 01203450
diff NaN 11-2311-5
where NaN NaN NaN -2 NaN NaN NaN -5
ffill NaN NaN NaN -2-2-2-2-5
fill_value 000-2-2-2-2-5
add 01201230
df.groupby('School').apply(lambda x:x['Math'].mul(x['Math'].cumsum()).diff().where(lambda m: m <0).ffill().add(x['Math'].cumsum(),fill_value=0))