IIU C, вы можете использовать groupby
и resample
:
(df.groupby(level=0, sort=False)
.resample('5min', on='timestamp').mean()
.reset_index()
)
Это, однако, не усредняет ваши метки времени, так как вы не можете добавить Datetime
тип в pandas, хотя есть способы обойти это.
name timestamp width length
0 10 2019-08-01 00:00:00 10.05 86.15
1 10 2019-08-01 00:05:00 10.05 86.25
2 8 2019-08-01 00:05:00 12.00 110.00
Обновить Если вам нужна средняя временная метка, вы можете временно преобразовать временную метку в int, взяв среднее и преобразовать обратно:
(df.assign(int_time=lambda x: x['timestamp'].astype('int64') )
.groupby(level=0, sort=False)
.resample('5min', on='timestamp').mean()
.reset_index()
.assign(timestamp=lambda x: x['int_time'].astype('int64').astype('datetime64[ns]'))
.drop('int_time', axis=1)
)
Вывод:
name timestamp width length
0 10 2019-08-01 00:00:05 10.05 86.15
1 10 2019-08-01 00:05:45 10.05 86.25
2 8 2019-08-01 00:05:54 12.00 110.00