如何在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
相关产品推荐
相关产品推荐

