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

Python中如何将object类型数据正确转换为纯time时间类型

问题原因

执行pd.to_datetime(data['Start_time'],format= '%H:%M:%S').dt.time后得到的是Python标准库原生datetime.time对象的集合,pandas没有为这类零散的Python原生时间对象提供内置的向量化数据类型,因此整列会自动归为object类型,这是pandas的存储机制导致的,不属于转换失败。

可选解决方案

根据实际使用需求选择对应方案即可:

  • 追求计算性能,需要做时间比较、筛选、聚合等向量化操作
    不要调用.dt.time剥离日期,直接保留pd.to_datetime返回的datetime64类型即可,这是pandas原生支持的时间类型,运算性能远高于object列:
    data['Start_time'] = pd.to_datetime(data['Start_time'], format='%H:%M:%S')
    
    后续如果需要提取时、分、秒维度的信息,直接使用.dt.hour、.dt.minute、.dt.second接口调用即可,不需要额外转成纯time对象。
  • 需要存储纯时间值、且要求非object的原生pandas类型
    把时分秒格式的字符串转为timedelta64类型即可,该类型支持所有时间大小比较、时间差计算等操作,完全满足纯时间值的使用需求:
    data['Start_time'] = pd.to_timedelta(data['Start_time'])
    
  • 使用pandas 2.0及以上版本,需要严格的专用time类型
    基于pyarrow后端的扩展time类型可以实现纯time列的非object存储,需要提前安装pyarrow依赖:
    data['Start_time'] = pd.to_datetime(data['Start_time'], format='%H:%M:%S').dt.time.astype('time[pyarrow]')
    
  • 仅做简单逐行取值,无批量计算需求
    你当前写的代码得到的object列本身可以正常使用,列内存储的确实是合法的datetime.time对象,只是存储类型显示为object,不需要额外修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:18:23