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

如何在Python Pandas中将含非英文月份缩写的日期转为可读格式?

解决Pandas中波兰语月份缩写转日期格式的问题

你遇到的错误是因为pd.to_datetime的%b格式符默认使用英文 locale,无法识别波兰语的月份缩写(如sty、kwi),导致时间字符串匹配失败。下面提供两种可行的解决方法:

方法一:手动替换波兰语月份缩写为英文

这种方法不依赖系统locale,兼容性更强,适合已知少量波兰语月份缩写的场景:

import pandas as pd

# 定义波兰语到英文月份缩写的映射字典
pl_en_month_map = {
    'sty': 'Jan',
    'kwi': 'Apr',
    'mar': 'Mar'
    # 若有其他波兰语月份缩写,可继续补充键值对
}

# 替换HOLIDAY列中的波兰语月份缩写
df['HOLIDAY'] = df['HOLIDAY'].replace(pl_en_month_map, regex=True)

# 转换为日期对象并格式化为dd-mm-yyyy字符串
df['HOLIDAY'] = pd.to_datetime(df['HOLIDAY'] + " " + df['YEAR'], format='%d %b %Y').dt.strftime('%d-%m-%Y')

方法二:设置波兰语locale

如果需要处理大量波兰语月份缩写,可以通过设置系统的波兰语locale来让%b识别对应缩写,但注意不同系统的locale名称可能不同:

import pandas as pd
import locale

# 尝试设置波兰语locale(Windows系统可用'pl_PL',Linux/macOS可用'pl_PL.UTF-8')
try:
    locale.setlocale(locale.LC_TIME, 'pl_PL.UTF-8')
except locale.Error:
    locale.setlocale(locale.LC_TIME, 'pl_PL')

# 转换日期并格式化
df['HOLIDAY'] = pd.to_datetime(df['HOLIDAY'] + " " + df['YEAR'], format='%d %b %Y').dt.strftime('%d-%m-%Y')

# 可选:恢复系统默认locale
locale.setlocale(locale.LC_TIME, '')

验证结果

处理后你的DataFrame会输出符合预期的格式:

IDHOLIDAYYEAR
11101-01-20222022
22220-04-20222022
33308-03-20222022

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:10:40