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

非格式化浮点数值转%H%M格式时间戳:to_datetime处理5.0报错求助

解决方案

问题出在5.0这类数值转换为字符串后是"5",不符合%H%M格式要求的4位数字(HHMM),导致pd.to_datetime解析失败。以下是具体解决步骤:

步骤1:转换浮点数为整数并补零到4位

先将浮点数列转为整数,再格式化为4位字符串(不足4位时前面补零),确保每个值都符合HHMM的格式规范:

import pandas as pd

# 创建示例DataFrame
df = pd.DataFrame({'time': [5.0, 504.0, 847.0, 11.0, 1247.0]})

# 转换为整数→字符串→补零到4位
df['time_hhmm'] = df['time'].astype(int).astype(str).str.zfill(4)

执行后time_hhmm列的值为:["0005", "0504", "0847", "0011", "1247"],完全符合%H%M的解析要求。

步骤2:转换为时间戳或格式化字符串

方式1:转为Python时间对象

使用pd.to_datetime解析后,提取时间部分:

df['timestamp'] = pd.to_datetime(df['time_hhmm'], format='%H%M').dt.time

结果timestamp列的值为:[00:05:00, 05:04:00, 08:47:00, 00:11:00, 12:47:00]。

方式2:直接生成HH:MM格式字符串

如果不需要时间对象,仅需格式化后的字符串,可以直接截取拼接:

df['time_formatted'] = df['time_hhmm'].str[:2] + ':' + df['time_hhmm'].str[2:]

结果time_formatted列的值为:["00:05", "05:04", "08:47", "00:11", "12:47"]。

特殊情况处理

如果你的数据中存在非整数型浮点数(如5.5),可以先通过round()或floor()取整后再处理:

# 四舍五入取整
df['time_hhmm'] = df['time'].round().astype(int).astype(str).str.zfill(4)
# 或者向下取整
df['time_hhmm'] = df['time'].astype(int).astype(str).str.zfill(4)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:45:39