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

如何将Pandas中categoricalDtype格式的时间列转为datetime类型?

解决方法

错误原因

你的time_gap列是有序分类类型,其底层存储的是**Timedelta(时间间隔)**对象,而pd.to_datetime无法直接将时间间隔转换为日期时间(datetime),因此抛出类型转换错误。

简便转换方案

方案1:提取时分秒字符串转Datetime

先将分类值转为字符串,拆分出0 days后的时分秒部分,再直接转换为datetime类型(默认会自动拼接当前日期,若仅需时间部分可后续提取):

# 转换为字符串并拆分出时分秒段
df["time_gap"] = df["time_gap"].astype(str).str.split(" ", n=1).str[1]
# 按时分秒格式转为datetime
df["time_gap"] = pd.to_datetime(df["time_gap"], format="%H:%M:%S")

如果只需要时间部分(而非带日期的datetime),可以追加:

df["time_gap"] = df["time_gap"].dt.time

方案2:Timedelta转Datetime(基于基准日期)

先将分类值转为Timedelta,再与一个基准日期相加得到datetime类型:

# 转换为Timedelta类型
td_series = pd.to_timedelta(df["time_gap"])
# 加上基准日期生成datetime(这里用1970-01-01作为基准)
df["time_gap"] = pd.Timestamp("1970-01-01") + td_series

这种方式得到的是带完整日期的datetime,若需仅保留时间显示,同样可以用.dt.time提取。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:52:02