在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')最好有几个选项。。。这并不像斯科特的评论那样有效,但它完成了任务