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

机器学习模型训练报错:无法将字符串日期转为浮点数

解决方法:将日期字符串转换为Unix时间戳

核心原因

模型仅能处理数值类型特征,你传入的字符串格式日期无法被直接解析为浮点型,必须转换为Unix时间戳(从1970-01-01 00:00:00 UTC到目标日期的秒数/毫秒数)。


方法1:用Pandas批量处理数据(推荐)

如果数据存在于Pandas DataFrame中,这是最高效的处理方式:

import pandas as pd

# 假设日期列名为'date_feature'
df['date_feature'] = pd.to_datetime(df['date_feature'])
# 转换为秒级Unix时间戳(转为浮点型适配模型输入)
df['unix_timestamp'] = df['date_feature'].view('int64') // 10**9

说明

  • pd.to_datetime():自动解析字符串格式的日期为Pandas datetime对象
  • .view('int64'):提取datetime对象对应的纳秒级整数,除以10^9转为秒级时间戳,最终输出数值类型可直接输入模型

方法2:用Python标准库处理单条日期值

如果是零散的日期字符串,使用datetime模块处理:

from datetime import datetime

date_str = '2017-08-31 18:06:36.000000'
# 按格式解析字符串为datetime对象
dt_obj = datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S.%f')
# 转换为Unix时间戳(秒级,返回浮点数)
unix_timestamp = dt_obj.timestamp()

注意

  • 格式符%Y-%m-%d %H:%M:%S.%f必须和你的日期字符串完全匹配,其中%f对应微秒部分
  • 转换后的时间戳为浮点型,可直接作为模型输入特征

后续操作

将转换后的Unix时间戳替换原日期列,确保所有输入模型的特征均为数值类型,重新运行训练代码即可解决该ValueError问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:50:21