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

Pandas中修正CSV日期列年份错误解决OutOfBoundsDatetime问题

修正CSV中错误日期的解决方案

问题根源

你的代码未生效,是因为Pandas读取CSV时可能自动尝试将ddate列解析为datetime类型,此时错误日期3021-06-30已触发越界错误,replace操作根本没机会执行。

正确处理步骤

1. 以字符串格式读取CSV

先避免自动解析日期,确保数据以字符串形式加载:

import pandas as pd

# 指定ddate列为字符串类型,防止自动解析出错
df = pd.read_csv("your_file.csv", dtype={"ddate": str})

2. 替换错误日期

  • 单个错误日期直接替换:
df["ddate"] = df["ddate"].replace("3021-06-30", "2021-06-30")
  • 批量处理同类错误(比如所有年份写成30xx的都修正为20xx),用正则更高效:
df["ddate"] = df["ddate"].str.replace(r"^30(\d{2})-", r"20\1-", regex=True)

3. 转换为datetime类型

替换完成后,再将列转为datetime类型:

df["ddate"] = pd.to_datetime(df["ddate"])

备选方案:读取时直接处理错误

如果不想拆分步骤,也可以在读取时自定义日期解析函数:

def fix_date(date_str):
    # 识别并修正年份错误
    if date_str.startswith("30"):
        return "20" + date_str[2:]
    return date_str

# 读取时直接解析并修正日期
df = pd.read_csv("your_file.csv", parse_dates=["ddate"], date_parser=lambda x: pd.to_datetime(fix_date(x)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:45:41