Решение
Вы можете вычесть 0.5 seconds
из объектов DateTimeIndex как объект datetime.timedelta
.
Короткий ответ
import datetime
dt = datetime.timedelta(seconds=0.5)
pd.DatetimeIndex(datetime_data) - dt
Вывод :
0 2018-01-22 21:38:59.500
1 2018-01-22 21:39:00.500
2 2018-01-22 21:39:02.500
3 2018-01-22 21:39:05.500
4 2018-01-22 21:39:06.500
5 2018-01-22 21:39:07.500
6 2018-01-22 21:39:08.500
7 2018-01-22 21:39:09.500
8 2018-01-22 21:39:10.500
9 2018-01-22 21:39:11.500
Name: Timestamp, dtype: datetime64[ns]
Подробное решение
1. Make Data
import numpy as np
import pandas as pd
datetime_data = ['2018-01-22 21:39:00', '2018-01-22 21:39:01',
'2018-01-22 21:39:03', '2018-01-22 21:39:06',
'2018-01-22 21:39:07', '2018-01-22 21:39:08',
'2018-01-22 21:39:09', '2018-01-22 21:39:10',
'2018-01-22 21:39:11', '2018-01-22 21:39:12']
dti = pd.DatetimeIndex(datetime_data)
dti
Вывод :
DatetimeIndex(['2018-01-22 21:39:00', '2018-01-22 21:39:01',
'2018-01-22 21:39:03', '2018-01-22 21:39:06',
'2018-01-22 21:39:07', '2018-01-22 21:39:08',
'2018-01-22 21:39:09', '2018-01-22 21:39:10',
'2018-01-22 21:39:11', '2018-01-22 21:39:12'],
dtype='datetime64[ns]', freq=None)
2. Вычесть 0.5
Второй
import datetime
df = pd.DataFrame(dti, columns=['Timestamp'])
dt = datetime.timedelta(seconds=0.5)
df.Timestamp - dt
Выход :
0 2018-01-22 21:38:59.500
1 2018-01-22 21:39:00.500
2 2018-01-22 21:39:02.500
3 2018-01-22 21:39:05.500
4 2018-01-22 21:39:06.500
5 2018-01-22 21:39:07.500
6 2018-01-22 21:39:08.500
7 2018-01-22 21:39:09.500
8 2018-01-22 21:39:10.500
9 2018-01-22 21:39:11.500
Name: Timestamp, dtype: datetime64[ns]