在python中,如何从日期时间索引中减去半秒?
如果我有这样一个日期时间索引:在python中,如何从日期时间索引中减去半秒?,python,python-3.x,pandas,datetime,Python,Python 3.x,Pandas,Datetime,如果我有这样一个日期时间索引: 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-
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)
如何从每个值中减去半秒,从而得到如下数据时间索引:
DatetimeIndex(['2018-01-22 21:38:59.50', '2018-01-22 21:39:00.50',
'2018-01-22 21:39:02.50', '2018-01-22 21:39:05.50',
'2018-01-22 21:39:06.50', '2018-01-22 21:39:07.50',
'2018-01-22 21:39:08.50', '2018-01-22 21:39:09.50',
'2018-01-22 21:39:10.50', '2018-01-22 21:39:11.50'], dtype='datetime64[ns]', freq=None)
您可以使用
pd.DateOffset
从每个值中减去0.5秒:
df.index - pd.DateOffset(seconds=0.5)
print(df)
DatetimeIndex(['2018-01-22 21:38:59.500000', '2018-01-22 21:39:00.500000',
'2018-01-22 21:39:02.500000', '2018-01-22 21:39:05.500000',
'2018-01-22 21:39:06.500000', '2018-01-22 21:39:07.500000',
'2018-01-22 21:39:08.500000', '2018-01-22 21:39:09.500000',
'2018-01-22 21:39:10.500000', '2018-01-22 21:39:11.500000'],
dtype='datetime64[ns]', name=0, freq=None)
解决方案
您可以从DateTimeIndex对象中减去0.5秒
,作为datetime.timedelta
对象
简短回答
导入日期时间
dt=datetime.timedelta(秒=0.5)
pd.DatetimeIndex(datetime_数据)-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]
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)
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.制作数据
将numpy导入为np
作为pd进口熊猫
datetime_数据=['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\u数据)
dti
输出:
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]
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)
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]
2.减去0.5
秒
导入日期时间
df=pd.DataFrame(dti,列=['Timestamp']))
dt=datetime.timedelta(秒=0.5)
时间戳-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]
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)
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]
datetime
有一个毫秒字段;减去500毫秒。