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

如何归一化pandas数据框的日期列 解决无法将日期字符串转为float的错误

报错原因

你使用的代码尝试直接对字符串格式的日期做数值转换,'17-Aug-20 00:00:00'这类日期字符串本身不属于数值类型,因此无法直接做浮点型转换和归一化计算。

解决步骤

要完成日期列的归一化,需要先把日期转换为可计算的数值型时间戳,再做归一化处理,具体实现代码如下:

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# 1. 将字符串类型的时间列转换为pandas datetime格式
df['Time'] = pd.to_datetime(df['Time'], format='%d-%b-%y %H:%M:%S')

# 2. 将datetime转换为Unix时间戳(数值型,单位为秒)
df['timestamp'] = df['Time'].apply(lambda x: x.timestamp())

# 3. 对时间戳做归一化处理,此处示例用你需要的(-1,1)取值范围
scaler = MinMaxScaler(feature_range=(-1, 1))
df['scaled_time'] = scaler.fit_transform(df[['timestamp']])

# 输出结果查看
print(df[['Time', 'scaled_time']])

补充:归一化值反向转回原始日期

如果后续需要把归一化后的数值还原为原始日期,可参考以下代码:

# 示例:取第一条数据的归一化值反向转换
scaled_val = df.loc[0, 'scaled_time']
# 先转回时间戳
origin_ts = scaler.inverse_transform([[scaled_val]])[0][0]
# 再转回日期格式
origin_time = pd.to_datetime(origin_ts, unit='s')
print(origin_time)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 13:54:04