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

如何在Python中将含null值的float型时间数值转换为time类型

转换实现方法

优化思路

  • 新增空值判断分支,遇到空值直接返回原值,保留空值不影响其他维度数据
  • 先对输入数值做float转整数处理,兼容浮点型存储的时间数值,避免小数位干扰字符串格式化
  • 可选新增异常捕获逻辑,兼容无效时间值场景,避免转换报错

优化后代码

基础版本(无异常捕获)

import datetime
import pandas as pd

def Format_Hourmin(hours):
    # 处理空值,直接返回保留
    if pd.isna(hours):
        return hours
    # 兼容浮点型输入,转整数
    hours_int = int(float(hours))
    # 处理2400特殊值
    if hours_int == 2400:
        return datetime.time(0, 0)
    hours_str = f"{hours_int:04d}"
    return datetime.time(int(hours_str[:2]), int(hours_str[2:]))

如果是纯Python场景,没有使用pandas,将空值判断行替换为if hours is None:即可。

批量处理pandas数据表列的调用方法

直接对目标列使用apply调用函数即可:
df['目标时间列'] = df['目标时间列'].apply(Format_Hourmin)

增强版本(带异常捕获,兼容无效值)

如果你的数据中存在不符合时分规则的异常值(如2500、1270等),可以使用加了异常捕获的版本:

import datetime
import pandas as pd

def Format_Hourmin(hours):
    if pd.isna(hours):
        return hours
    try:
        hours_int = int(float(hours))
        if hours_int == 2400:
            return datetime.time(0, 0)
        hours_str = f"{hours_int:04d}"
        return datetime.time(int(hours_str[:2]), int(hours_str[2:]))
    except (ValueError, TypeError):
        # 异常时返回空值,也可根据业务需求返回自定义默认时间
        return None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:15:03