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

求助:使用pandas to_datetime时如何保留时间信息

问题重现

执行以下代码:

import pandas as pd
df = pd.DataFrame(["2013-03-13T00:00:00"], columns=["t"])
pd.to_datetime(df["t"])

得到结果:

0   2013-03-13
Name: t, dtype: datetime64[ns]

希望保留时间信息(即使是00:00:00),因为其他行包含有效时间数据,但pd.to_datetime执行后显示时会隐藏时间部分,尝试多个参数未解决。

环境版本:

pd.__version__  # '1.5.3'
sys.version     # '3.10.9 (main, Feb 28 2023, 09:28:42) [Clang 14.0.0 (clang-1400.0.29.202)]'
解决方案

1. 时间信息并未丢失

pandas只是在显示时自动隐藏了全零的时间部分,实际时间数据仍然存在。验证方法:

dt_series = pd.to_datetime(df["t"])
print(dt_series.iloc[0])  # 输出:2013-03-13 00:00:00

当数据列中存在带非零时间的行时,pandas会自动显示完整的日期+时间格式,无需额外设置。

2. 强制显示完整时间格式

如果需要无论时间是否全零都显示完整格式,可通过以下方式实现:

方式一:修改全局显示选项

设置datetime类型的默认显示格式:

pd.set_option("display.float_format", lambda x: f"{x:%Y-%m-%d %H:%M:%S}" if isinstance(x, pd.Timestamp) else x)

设置后,所有datetime列输出时都会显示完整的日期和时间。

方式二:临时格式化输出(推荐,不影响全局设置)

不改变原数据的datetime类型,仅临时格式化显示:

# 方法1:转换为字符串格式输出(仅用于展示,不建议修改原数据类型)
dt_series.dt.strftime("%Y-%m-%d %H:%M:%S")

# 方法2:用style格式化DataFrame显示
df["t"] = dt_series
df.style.format({"t": "{:%Y-%m-%d %H:%M:%S}"})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 08:47:31