在Python中,如何从dataframe中的DateTimeIndex中删除微秒?
我想从索引中删除微秒 我的索引如下:在Python中,如何从dataframe中的DateTimeIndex中删除微秒?,python,pandas,datetime,indexing,type-conversion,Python,Pandas,Datetime,Indexing,Type Conversion,我想从索引中删除微秒 我的索引如下: DatetimeIndex(['2003-11-20 13:07:40.895000+00:00', '2003-11-20 13:16:13.039000+00:00', '2003-11-20 13:24:44.868000+00:00', '2003-11-20 13:33:17.013000+00:00', '2003-11-20 13:41:49.158000+
DatetimeIndex(['2003-11-20 13:07:40.895000+00:00',
'2003-11-20 13:16:13.039000+00:00',
'2003-11-20 13:24:44.868000+00:00',
'2003-11-20 13:33:17.013000+00:00',
'2003-11-20 13:41:49.158000+00:00',
'2003-11-20 13:50:20.987000+00:00',
'2003-11-20 13:58:53.132000+00:00',
'2003-11-20 14:07:24.961000+00:00',
'2003-11-20 14:15:57.106000+00:00',
'2003-11-20 14:24:28.935000+00:00',
...
'2003-12-04 19:28:56.025000+00:00',
'2003-12-04 19:37:27.854000+00:00',
'2003-12-04 19:45:59.999000+00:00',
'2003-12-04 19:54:32.143000+00:00',
'2003-12-04 20:03:03.972000+00:00',
'2003-12-04 20:11:36.117000+00:00',
'2003-12-04 20:20:07.946000+00:00',
'2003-12-04 20:28:40.091000+00:00',
'2003-12-04 20:37:11.920000+00:00',
'2003-12-04 20:45:44.065000+00:00'],
dtype='datetime64[ns, UTC]'
didx = pd.DatetimeIndex(['2003-11-20 13:07:40.895000+00:00',
'2003-11-20 13:16:13.039000+00:00',
'2003-11-20 13:24:44.868000+00:00',
'2003-11-20 13:33:17.013000+00:00',
'2003-11-20 13:41:49.158000+00:00',
'2003-11-20 13:50:20.987000+00:00',
'2003-11-20 13:58:53.132000+00:00',
'2003-11-20 14:07:24.961000+00:00',
'2003-11-20 14:15:57.106000+00:00',
'2003-11-20 14:24:28.935000+00:00',
'2003-12-04 19:28:56.025000+00:00',
'2003-12-04 19:37:27.854000+00:00',
'2003-12-04 19:45:59.999000+00:00',
'2003-12-04 19:54:32.143000+00:00',
'2003-12-04 20:03:03.972000+00:00',
'2003-12-04 20:11:36.117000+00:00',
'2003-12-04 20:20:07.946000+00:00',
'2003-12-04 20:28:40.091000+00:00',
'2003-12-04 20:37:11.920000+00:00',
'2003-12-04 20:45:44.065000+00:00'],
dtype='datetime64[ns, UTC]')
我想去掉微秒,只为了得到这样的东西:'2003-12-0420:45:44'
我不想将其转换为字符串,因为它需要保留datetime,因为它是dataframe的索引。
我一直在寻找这个,但我只找到了这个,它不起作用:
df.index.replace(microsecond=0, inplace = True)
您能帮助我吗?您应该能够在每个上使用
.strftime(“%Y-%m-%d%H:%m:%S”)
。给定一个带有时区信息和毫秒数据的pd.DateTimeIndex,如下所示:
DatetimeIndex(['2003-11-20 13:07:40.895000+00:00',
'2003-11-20 13:16:13.039000+00:00',
'2003-11-20 13:24:44.868000+00:00',
'2003-11-20 13:33:17.013000+00:00',
'2003-11-20 13:41:49.158000+00:00',
'2003-11-20 13:50:20.987000+00:00',
'2003-11-20 13:58:53.132000+00:00',
'2003-11-20 14:07:24.961000+00:00',
'2003-11-20 14:15:57.106000+00:00',
'2003-11-20 14:24:28.935000+00:00',
...
'2003-12-04 19:28:56.025000+00:00',
'2003-12-04 19:37:27.854000+00:00',
'2003-12-04 19:45:59.999000+00:00',
'2003-12-04 19:54:32.143000+00:00',
'2003-12-04 20:03:03.972000+00:00',
'2003-12-04 20:11:36.117000+00:00',
'2003-12-04 20:20:07.946000+00:00',
'2003-12-04 20:28:40.091000+00:00',
'2003-12-04 20:37:11.920000+00:00',
'2003-12-04 20:45:44.065000+00:00'],
dtype='datetime64[ns, UTC]'
didx = pd.DatetimeIndex(['2003-11-20 13:07:40.895000+00:00',
'2003-11-20 13:16:13.039000+00:00',
'2003-11-20 13:24:44.868000+00:00',
'2003-11-20 13:33:17.013000+00:00',
'2003-11-20 13:41:49.158000+00:00',
'2003-11-20 13:50:20.987000+00:00',
'2003-11-20 13:58:53.132000+00:00',
'2003-11-20 14:07:24.961000+00:00',
'2003-11-20 14:15:57.106000+00:00',
'2003-11-20 14:24:28.935000+00:00',
'2003-12-04 19:28:56.025000+00:00',
'2003-12-04 19:37:27.854000+00:00',
'2003-12-04 19:45:59.999000+00:00',
'2003-12-04 19:54:32.143000+00:00',
'2003-12-04 20:03:03.972000+00:00',
'2003-12-04 20:11:36.117000+00:00',
'2003-12-04 20:20:07.946000+00:00',
'2003-12-04 20:28:40.091000+00:00',
'2003-12-04 20:37:11.920000+00:00',
'2003-12-04 20:45:44.065000+00:00'],
dtype='datetime64[ns, UTC]')
您可以使用pd.DateTimeIndex.floor
和tz_localize(None)
,将时间戳截断为秒,并删除时区信息
didx.floor('S').tz_localize(None)
输出:
DatetimeIndex(['2003-11-20 13:07:40', '2003-11-20 13:16:13',
'2003-11-20 13:24:44', '2003-11-20 13:33:17',
'2003-11-20 13:41:49', '2003-11-20 13:50:20',
'2003-11-20 13:58:53', '2003-11-20 14:07:24',
'2003-11-20 14:15:57', '2003-11-20 14:24:28',
'2003-12-04 19:28:56', '2003-12-04 19:37:27',
'2003-12-04 19:45:59', '2003-12-04 19:54:32',
'2003-12-04 20:03:03', '2003-12-04 20:11:36',
'2003-12-04 20:20:07', '2003-12-04 20:28:40',
'2003-12-04 20:37:11', '2003-12-04 20:45:44'],
dtype='datetime64[ns]', freq=None)
尝试
df.index.floor('S')
我得到这样的结果:'2003-11-20 13:07:40+00:00'那+00:00是时区信息,你不需要,然后尝试:didx.floor('S').tz_本地化(无)
尝试df.index.astype('datetime64[S'))
还有idx.floor('S')。tz_转换(无)
。。。因此,不同之处在于,当您想要更改时区时,tz_convert
会将时间更改为新tz中的时间,tz_localize
会保持时间不变并只标记新tz是的,它起作用了,但它将索引转换为字符串。您能尝试一下吗?这将允许您根据需要传递datetime对象、格式,并作为datetime对象返回。所以datetime.strTime({date\u time object},'%Y-%m-%d%H:%m:%S')最好有几个选项。。。这并不像斯科特的评论那样有效,但它完成了任务