You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将DataFrame的datetime列转为string后时分秒丢失,如何保留指定格式?

问题描述

我加载了一个包含时间序列和数值的DataFrame,数据如下:

datetime              value_a
0     2019-08-19 00:00:00   194.32000000
1     2019-08-20 00:00:00   202.24000000
2     2019-08-21 00:00:00   196.55000000
3     2019-08-22 00:00:00   187.45000000
4     2019-08-23 00:00:00   190.36000000 

执行代码df['datetime'] = df['datetime'].astype(str)将第一列转为string类型后,时分秒消失,结果如下:

datetime     value_a
0    2019-08-19   194.32000000
1    2019-08-20   202.24000000
2    2019-08-21   196.55000000
3    2019-08-22   187.45000000
4    2019-08-23   190.36000000

我需要保留%Y-%m-%d %H:%M:%S格式供后续使用,请问问题出在哪里?

注:最初以为是object转datetime时的问题,但后来发现是转string时丢失了时分秒。


原因分析

当datetime列是pandas的datetime64类型时,直接用astype(str)转换字符串,pandas会做自动格式简化:如果时间的时分秒部分全为0,就默认只输出日期部分,不会保留时分秒的0值。

解决方法

不要用astype(str),改用dt.strftime()方法指定固定格式化字符串,强制保留时分秒:

df['datetime'] = df['datetime'].dt.strftime('%Y-%m-%d %H:%M:%S')

执行后,datetime列会严格按照YYYY-MM-DD HH:MM:SS格式输出,即使时分秒都是0也会完整保留。

内容的提问来源于stack exchange,提问作者FN_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 02:40:39