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

如何将字母格式日期转换为数字格式并应用到pandas Series中

代码问题分析

  • 函数内部变量未定义:你写的datetime.strptime(bad_date, '%b %d, %Y')没有把解析后的日期对象赋值给变量,后续调用的s属于未定义变量。你单独调用函数时能成功,大概率是提前定义过全局变量s,但apply调用时函数内部无法访问到全局的s,触发报错。
  • 格式化规则不符合预期:你需要的输出格式是17.09.2021,但代码里用的%Y-%m-%d输出格式为年-月-日,和需求不符。

修正方案

方案1:修改自定义函数

from datetime import datetime

def to_normal_date(bad_date):
    # 接收strptime返回的日期对象
    date_obj = datetime.strptime(bad_date, '%b %d, %Y')
    # 按日.月.年格式输出
    return date_obj.strftime('%d.%m.%Y')

df['normal_date'] = df['date'].apply(to_normal_date)

方案2:更高效的pandas原生写法(推荐,性能远高于逐行apply)

import pandas as pd

df['normal_date'] = pd.to_datetime(df['date'], format='%b %d, %Y').dt.strftime('%d.%m.%Y')

注意事项

如果运行时提示月份识别错误,是因为系统默认区域不是英文,导致英文月份缩写无法解析,可临时调整区域设置:

import locale
# 临时切换为英文区域
locale.setlocale(locale.LC_TIME, 'en_US.UTF-8')
df['normal_date'] = pd.to_datetime(df['date'], format='%b %d, %Y').dt.strftime('%d.%m.%Y')
# 切换回默认区域
locale.setlocale(locale.LC_TIME, '')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:24:03