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

Google Colab中CSV日期列格式统一问题求助

解决CSV多格式日期统一转换问题

问题原因分析

  1. 格式不匹配报错:你编写的转换函数仅指定了%m/%d/%y(斜杠分隔、两位年份)的格式,但数据中存在另一种%m-%d-%Y(连字符分隔、四位年份)的日期格式,导致解析失败。另外代码中存在拼写错误:purhcase_date应为purchase_date。
  2. "'Series' object has no attribute 'year'"报错:你直接对未转换为datetime类型的object列调用year属性,只有datetime64类型的列才能通过.dt.year访问年份。

解决方案

方法一:使用pandas内置函数自动识别(推荐)

pandas的pd.to_datetime可以自动识别多种常见日期格式,无需手动处理每种格式:

import pandas as pd

# 将purchase_date列转换为datetime类型
project_data['purchase_date'] = pd.to_datetime(project_data['purchase_date'], errors='coerce')

# 统一转为目标格式,例如'YYYY-MM-DD'
project_data['formatted_date'] = project_data['purchase_date'].dt.strftime('%Y-%m-%d')

# 如需提取年份,使用.dt.year
project_data['year'] = project_data['purchase_date'].dt.year
  • errors='coerce':将无法识别的无效日期转为NaT(缺失值),便于后续排查处理。

方法二:自定义函数处理两种格式

如果你需要手动控制解析逻辑,可以通过异常捕获处理两种格式:

import datetime

def parse_date(x):
    try:
        # 尝试解析斜杠分隔的格式(如8/21/2013)
        return datetime.datetime.strptime(x, '%m/%d/%Y')
    except ValueError:
        # 失败则解析连字符分隔的格式(如09-04-2012)
        return datetime.datetime.strptime(x, '%m-%d-%Y')

# 注意修正拼写错误:purhcase_date → purchase_date
project_data['new_'] = project_data['purchase_date'].apply(parse_date)

# 提取年份
project_data['year'] = project_data['new_'].dt.year

内容的提问来源于stack exchange,提问作者Prateek Kumar Agarwal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:45:42