Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,如何从日期时间索引中减去半秒?_Python_Python 3.x_Pandas_Datetime - Fatal编程技术网

在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毫秒。