Диапазон дат (секунд)
Кажется, вы используете pandas
. Если это так, вы действительно должны взглянуть на его особенности временного ряда: https://pandas.pydata.org/pandas-docs/stable/timeseries.html
Более конкретно, на pandas.date_range()
:
import pandas as pd
pd.date_range('00:00:00', '00:00:20', freq='5s')
Поскольку это функция диапазона date , она вернет datetime
DatetimeIndex(['2019-03-06 00:00:00',
'2019-03-06 00:00:05',
...,
'2019-03-06 00:00:20'], dtype='datetime64[ns]', freq='5S')
Отсюда просто используйте .strftime()
, чтобы получить то, что вы хотите:
pd.date_range('00:00:00', '00:00:20', freq='5s').strftime('%H:%M:%S')
Возвращает
Index(['00:00:00', '00:00:05', ..., '00:00:20'], dtype='object')
Доступ к данным по времени
После этого для доступа к вашему фрейму данных с использованием этого индекса у вас есть две опции:
- Используя
.loc
, найдите строку, где это время:
for time in pd.date_range('00:00:00', '00:00:20', freq='5s').strftime('%H:%M:%S'):
if (df.loc[df['time'] == time, 'speed'] ..):
- Переопределив индекс фрейма данных с помощью
set_index()
, а затем напрямую обратившись к нему:
df.set_index('time', inplace=True)
for time in pd.date_range('00:00:00', '00:00:20', freq='5s').strftime('%H:%M:%S'):
if (df.speed[time] ...):
Изменить адрес вопроса на вопрос
После того, как вы используете strftime()
, оно преобразуется в строку. Вы можете преобразовать его обратно, чтобы добавить 10 секунд, например:
df.speed[(pd.to_datetime(time) + pd.to_timedelta(10, unit='s')).strftime('%H:%M:%S')].
Или:
for time in pd.date_range('00:00:00', '00:00:20', freq='5s'):
if (df.speed[time.strftime('%H:%M:%S')]>df.speed[(time + pd.to_timedelta(10, unit='s')).strftime('%H:%M:%S')]):