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

如何正确处理pandas中的Date列,将'Jun 2021'批量转换为'2021-06'格式

Pandas 月份格式转换解决方案

核心转换代码

直接使用指定格式的日期转换逻辑,避免自动推断带来的匹配错误:

  • 第一步:将原object类型的日期列转为datetime类型,明确指定输入格式为英文月份缩写+4位年份
# %b 匹配英文月份缩写(如Jun、Dec),%Y 匹配4位年份
df['Date'] = pd.to_datetime(df['Date'], format='%b %Y', errors='coerce')

添加errors='coerce'参数后,格式异常的行会被转为NaT空值,不会直接中断转换流程,方便后续排查异常数据。

  • 第二步:将datetime类型的列格式化为YYYY-MM格式的字符串
df['Date'] = df['Date'].dt.strftime('%Y-%m')

常见报错排查方向

如果执行上述代码仍有报错,可按以下顺序排查:

  • 先筛查原Date列的异常值:执行print(df[df['Date'].apply(lambda x: not isinstance(x, str) or len(x.strip()) < 8)]),检查是否存在空值、数字类型值、长度不符合规范的异常内容,修正后再重新转换。
  • 若系统为中文locale导致无法识别英文月份缩写,可在转换前临时切换时间locale为英文:
import locale
# 临时指定时间识别规则为英文
original_locale = locale.getlocale(locale.LC_TIME)
locale.setlocale(locale.LC_TIME, 'en_US.UTF-8')

# 执行上面的两步转换代码

# 转换完成后切回原locale
locale.setlocale(locale.LC_TIME, original_locale)
  • 检查是否存在非标准月份缩写,比如自定义缩写Jn代替Jun这类错误,批量修正后再执行转换即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:54:07