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

KMeans聚类日期数据报错:日期转时间戳失败求助

解决方案

问题根源是你的Alert_Time列存在多种日期字符串格式(如'2020-12-22 00:00:00'和'2020-12-22'),直接将字符串转为整数会失败;同时KMeans仅支持数值型输入,无法直接处理字符串日期。按以下步骤解决:

1. 统一转换为datetime类型

用pandas的to_datetime方法自动识别多种日期格式,把字符串转为标准datetime对象:

import pandas as pd
import numpy as np
from sklearn.cluster import KMeans

# 转换日期列,无法识别的无效值转为NaT
df["Alert_Time"] = pd.to_datetime(df["Alert_Time"], errors="coerce")
  • 后续可通过df.dropna(subset=["Alert_Time"])删除含缺失值的行,或用df["Alert_Time"].fillna(...)填充缺失值。

2. 转换为秒级时间戳

从datetime对象提取秒级时间戳,得到KMeans可接受的数值类型:

# 两种等价写法任选其一
df["stamp"] = df["Alert_Time"].view("int64") // 10**9
# 或
df["stamp"] = df["Alert_Time"].astype(np.int64) // 10**9

3. 执行KMeans聚类

确保用于聚类的特征列全为数值型(比如保留stamp和其他业务数值列):

# 替换为你的实际数值特征列名
feature_cols = ["stamp", "数值列1", "数值列2"]
k_means = KMeans(n_clusters=3)
k_means.fit(df[feature_cols])

特殊格式处理

如果to_datetime无法自动识别日期格式,可手动指定格式:

# 单一格式指定
df["Alert_Time"] = pd.to_datetime(df["Alert_Time"], format="%Y-%m-%d %H:%M:%S", errors="coerce")
# 多格式混合(pandas 1.3.0+支持)
df["Alert_Time"] = pd.to_datetime(df["Alert_Time"], format=["%Y-%m-%d %H:%M:%S", "%Y-%m-%d"], errors="coerce")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:45:02