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

如何将Pandas列中仅含年月的字符串转换为指定格式datetime且不新增日信息

问题原因

你之前的代码失效是因为使用了错误的格式匹配符:%mmm%YY不是pandas支持的日期格式标识,正确的对应规则为:

  • %b 匹配英文月份缩写(如JAN、FEB)
  • %Y 匹配4位年份(如2021、2022)

另外需要提前说明:pandas不存在仅包含年月的datetime类型,所有datetime类型底层都会携带完整的年月日信息,解析时会默认补充当月1日作为日值,这个操作不会修改你的原始数据,也不会影响年月维度的计算、筛选,完全满足需求。

可行实现方案

方案1:保留datetime计算能力(推荐)

如果后续需要对日期列做时间计算、范围筛选,优先选择此方案,转换后同时保留计算用的datetime列和展示用的格式列:

# 可选:如果环境locale不是英文,先执行这行确保能正确识别JAN这类英文月份缩写
# import locale
# locale.setlocale(locale.LC_TIME, 'en_US.UTF-8')

# 1. 将原始字符串解析为datetime类型
df2['MONTH1_datetime'] = pd.to_datetime(df2['MONTH1'], format="%b%Y")
# 2. 生成JAN-2021格式的展示列,转全大写匹配原始格式的大小写
df2['MONTH1_display'] = df2['MONTH1_datetime'].dt.strftime("%b-%Y").str.upper()

方案2:直接转换为指定格式的字符串

如果不需要做时间计算,只需要修改显示格式,直接用字符串切片处理即可,无需走日期解析逻辑:

df2['MONTH1'] = df2['MONTH1'].str[:3] + '-' + df2['MONTH1'].str[3:]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:00:00