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

pandas调用pd.to_datetime报错混合日期时间与整数解决方案

报错根因

这个错误和重复值无关,本质是你要转换的时间列里同时混杂了日期格式值和整数类型值(可能是误录入的数字、未格式化的Unix时间戳、异常编码的空值等),pd.to_datetime()默认自动推断格式时无法统一处理混存类型,就会抛出该错误,去重操作完全不涉及类型清洗,自然解决不了问题。

第一步:先定位脏数据

先跑以下代码把列里无法正常解析为时间的异常行筛出来,确认整数的来源:

import pandas as pd

def is_invalid(value):
    try:
        pd.to_datetime(value)
        return False
    except:
        return True

# 筛选出所有异常值行
abnormal_df = df[df['Timestamp'].apply(is_invalid)]
print(abnormal_df)

根据输出的异常内容,按业务规则修正脏值:如果是录入错误就改回正确时间格式,如果是无意义脏值可以直接删除或填充。

第二步:分场景执行转换
  • 如果筛出来的整数是Unix时间戳(和格式化时间字符串混存),转换时加上对应参数,同时加兜底规则避免报错:
# 秒级时间戳用unit='s',毫秒级改成unit='ms'
df['Timestamp'] = pd.to_datetime(df['Timestamp'], errors='coerce', unit='s')

参数errors='coerce'会把实在无法解析的异常值统一转为NaT(pandas的空时间类型),不会中断转换流程。

  • 如果整数是无意义的录入脏值,清理完定位到的异常数据后,直接带兜底参数转换即可:
df['Timestamp'] = pd.to_datetime(df['Timestamp'], errors='coerce')

额外提醒:你的代码里写的转换列名是My_Datetime,但给出的DataFrame示例里时间列名是Timestamp,转换前务必确认列名和实际列匹配,列名写错也可能触发意料之外的类型报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:49:13