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

如何用pandas.read_excel()正确读取Excel中的HH:MM:SS格式时间

解决pandas读取Excel时间列显示为小数的问题

Excel中的HH:MM:SS格式时间本质是一天的占比小数(比如10:13:20对应0.4259259),pandas读入后若显示为object类型的小数,可通过以下两种批量转换方法恢复原时间格式:

方法一:读取时直接转换

用pd.read_excel()的converters参数指定列转换逻辑,一步到位生成格式化时间:

import pandas as pd

df = pd.read_excel("your_file.xlsx",
                   converters={
                       "Start_Time": lambda x: pd.to_datetime(float(x), unit="d").strftime("%H:%M:%S") if pd.notna(x) else ""
                   })
  • 逻辑说明:将读入的object类型小数转为float,通过unit="d"把天数比例转成datetime对象,再格式化为HH:MM:SS格式;空值保留为空字符串。

方法二:读入后批量转换

若已加载数据到DataFrame,按以下步骤处理:

  1. 先将列转为数值类型(自动将空值转为NaN):
df["Start_Time"] = pd.to_numeric(df["Start_Time"], errors="coerce")
  1. 高效批量转换为时间字符串:
    推荐用pd.to_timedelta实现批量处理(无需逐行apply):
# 转换为时间差类型并格式化
df["Start_Time"] = pd.to_timedelta(df["Start_Time"].astype(float), unit="d").dt.strftime("%H:%M:%S")
# 将NaN替换为空字符串
df["Start_Time"] = df["Start_Time"].fillna("")

示例验证

针对你提供的示例数据,上述方法会将对应小数转为16:24:50、03:29:04这类原格式时间,空值保持为空,完全匹配Excel中的原始显示。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:50:36