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

如何在Pandas中将Excel时间格式转换为m:ss格式的字符串?

解决Pandas中datetime.time类型转m:ss格式的问题

问题分析

你遇到的报错根源在于:

  • pd.to_datetime()无法直接转换原生Python的datetime.time对象,它仅支持字符串、数值或Pandas内置的datetime64类型数据
  • .dt访问器只适用于Pandas的datetime64或timedelta64类型列,而你的min列是原生datetime.time类型,因此无法调用该方法

解决方案

方案1:直接对datetime.time对象格式化

利用datetime.time对象自带的minute和second属性,自定义生成目标格式字符串:

# 假设你的DataFrame名为df
df['min_formatted'] = df['min'].apply(lambda t: f"{t.minute}:{t.second:02d}")
  • 说明:t.minute提取无前置零的分钟数,t.second:02d确保秒数以两位数字显示(如3秒显示为03),完全匹配你需要的m:ss格式

方案2:转换为timedelta类型后处理

先将datetime.time转为字符串,再转换为Pandas的timedelta64类型,后续可借助时间差方法灵活处理:

# 转换为timedelta类型
df['min_timedelta'] = pd.to_timedelta(df['min'].astype(str))

# 基于总秒数格式化为m:ss
total_seconds = df['min_timedelta'].dt.total_seconds()
df['min_formatted'] = total_seconds.apply(lambda s: f"{int(s//60)}:{int(s%60):02d}")
  • 优势:如果后续需要对时间做运算(如求和、排序),timedelta类型会更便于操作

验证结果

处理后你的DataFrame会新增min_formatted列,内容示例如下:

#mincausemin_formatted
100:01:30db1:30
200:02:03db2:03
300:01:47ct1:47

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:46:04