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

Python如何将整数型时间列转换为HH:MM格式的datetime标准时间

整数时间列转HH:MM格式实现方案

这类整数时间是业务场景中常见的HHMM拼接编码,即值为小时*100 + 分钟,直接调用pd.to_datetime时pandas默认会将整数识别为Unix时间戳,无法匹配编码规则因此转换失败,可参考以下方案实现:

Pandas 批量处理DataFrame列(适配pandas使用场景)

核心思路是先将整数统一补为4位字符串,指定%H%M格式明确解析规则,避免被误判为时间戳:

import pandas as pd

# 构造样例数据
df = pd.DataFrame({'time_int': [800, 1430, 1250, 1020, 407]})

# 1. 转为标准datetime对象(适合后续做时间计算、时间差统计)
df['time_datetime'] = pd.to_datetime(
    df['time_int'].astype(str).str.zfill(4),  # 补零为4位,比如407→"0407"、800→"0800"
    format='%H%M'  # 明确指定解析规则:前两位小时、后两位分钟
)

# 2. 格式化为HH:MM样式的字符串
df['time_str'] = df['time_datetime'].dt.strftime('%H:%M')

运行后结果完全匹配预期:

time_inttime_str
80008:00
143014:30
125012:50
102010:20
40704:07

如果不需要做时间计算,只需要字符串结果,可以直接用算术拆分+字符串格式化,性能比datetime解析高3~5倍,适合百万级以上大数据量:

df['time_str_fast'] = df['time_int'].apply(
    lambda x: f"{x//100:02d}:{x%100:02d}"
)

原生Python datetime 单值处理

如果不依赖pandas,可以直接拆分时分后组装为datetime.time对象再格式化:

from datetime import time

def int_to_time(time_int: int) -> str:
    hour = time_int // 100
    minute = time_int % 100
    # 组装为标准时间对象
    t = time(hour=hour, minute=minute)
    # 返回HH:MM格式字符串
    return t.strftime('%H:%M')

# 测试样例
test_list = [800, 1430, 1250, 1020, 407]
for val in test_list:
    print(int_to_time(val))

常见报错原因说明

  • 直接调用pd.to_datetime(整数列)失败:pandas默认将整数输入识别为Unix时间戳(单位随版本变化为纳秒/毫秒/秒),完全不匹配HHMM拼接的编码规则
  • 直接调用strftime失败:strftime是datetime/time对象的实例方法,整数类型没有该方法,必须先完成解析拿到合法时间对象才能调用
  • 解析报hour must be in 0..23/minute must be in 0..59错误:先排查数据中是否存在异常值,比如大于2359的数值、取模100后结果大于59的数值,这类值不符合时间编码规则,需要先清洗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:27:41