Предполагая, что ваши данные регулярно располагаются, вы можете concat
смещенную серию и затем взять сумму.
N = 10 # Every 10 seconds from first row
ov = 2 # 2s overlap on either side
pd.concat([df.shift(i).iloc[::N] for i in range(-ov, N+ov)], axis=1).sum(1)
date
2018-03-09 12:00:00 3.0
2018-03-09 12:00:10 15.0
2018-03-09 12:00:20 28.0
2018-03-09 12:00:30 34.0
dtype: float64
Для нескольких столбцов превратить это в groupby
вдоль оси столбцов:
df['data2'] = df['data']+1 # Another column
(pd.concat([df.shift(i).iloc[::N] for i in range(-ov, N+ov)], axis=1)
.groupby(level=0, axis=1).sum())
data data2
date
2018-03-09 12:00:00 3.0 6.0
2018-03-09 12:00:10 15.0 28.0
2018-03-09 12:00:20 28.0 42.0
2018-03-09 12:00:30 34.0 46.0