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
相关产品推荐
相关产品推荐

