Я считаю, что нужно diff
с ge
для >=20
и cumsum
для Series
в качестве аргумента для groupby
и совокупность sum
:
df = df.groupby(df['time'].diff().ge(20).cumsum())['value'].sum()
print (df)
time
0 16
1 30
2 22
Name: value, dtype: int64
Деталь
print (df['time'].diff().ge(20).cumsum())
0 0
1 0
2 0
3 1
4 1
5 1
6 2
7 2
8 2
Name: time, dtype: int32