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

Pandas日期格式转换求助:将英文日期转为yyyy-mm-dd格式

Pandas日期格式转换问题解决方法

问题分析

你遇到的IndexError: list index out of range是因为自定义代码的字符串拆分逻辑错误:

  • 原日期字符串"September 25, 2021"用, 拆分后只会得到2个元素:["September 25", "2021"],取索引[2]自然越界
  • 用空格拆分后,第二个元素是"25,"(带逗号),直接使用会导致格式错误

推荐解决方案:用Pandas自带的to_datetime

这是最简单高效的方法,Pandas能自动识别这种英文日期格式,无需手动拆分:

import pandas as pd

# 转换为datetime类型,再格式化为yyyy-mm-dd字符串
df['date_added'] = pd.to_datetime(df['date_added']).dt.strftime('%Y-%m-%d')

如果数据中有无法识别的脏数据,可以添加errors='coerce'参数将无效值转为NaT,方便后续处理:

df['date_added'] = pd.to_datetime(df['date_added'], errors='coerce').dt.strftime('%Y-%m-%d')

修复你的自定义代码

如果想手动实现逻辑,修正后的代码如下:

date_map = {'January': '01', 'February': '02', 'March': '03', 'April': '04', 
            'May': '05', 'June': '06', 'July': '07', 'August': '08', 
            'September': '09', 'October': '10', 'November': '11', 'December': '12'}
new_date = []
for d in df['date_added']:
    parts = d.split(' ')
    month_code = date_map[parts[0]]
    # 去掉天数后面的逗号
    day = parts[1].replace(',', '')
    year = parts[2]
    # 拼接成yyyy-mm-dd格式,zfill(2)确保天数是两位
    formatted_date = f"{year}-{month_code}-{day.zfill(2)}"
    new_date.append(formatted_date)
df['date_added'] = new_date

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:43:12