如何将含数字年份、英文月份的日期转换为全数字格式
解决方案
以下是不同常用工具场景下的实现方式:
1. Python(Pandas环境)
- 方法1:用内置日期解析自动识别月份缩写,适合绝大多数常规场景
import pandas as pd # 读取数据集后直接处理date列 df['date'] = pd.to_datetime(df['date'], format='%d-%b').dt.strftime('%d-%m')
说明:%b是匹配英文月份缩写的格式符,%m输出两位数字月份,不需要补前导零的话可以改成%-m(Windows环境为%#m)
- 方法2:自定义映射,适合存在非标准月份缩写的特殊场景
month_map = { 'Jan': '01', 'Feb': '02', 'Mar': '03', 'Apr': '04', 'May': '05', 'Jun': '06', 'Jul': '07', 'Aug': '08', 'Sep': '09', 'Oct': '10', 'Nov': '11', 'Dec': '12' } # 分割日期为日、月份两部分,替换后拼接 df['date'] = df['date'].str.split('-').apply(lambda x: f"{x[0]}-{month_map[x[1]]}")
2. Excel/WPS表格
假设date列数据存放在A列,直接用公式处理即可:
=TEXT(--SUBSTITUTE(A1,"-","-2023-"),"dd-mm")
说明:这里补入任意公历年即可(仅用于辅助转成日期格式,不会出现在最终输出里),也可以通过VLOOKUP匹配月份映射表实现,上述公式相对更简洁。
3. SQL(以MySQL为例)
如果数据存储在数据库中,可直接用SQL语句处理:
SELECT DATE_FORMAT(STR_TO_DATE(date, '%d-%b'), '%d-%m') AS date FROM 你的表名;
说明:不同数据库的格式符存在细微差异,比如Oracle环境下使用TO_DATE(date, 'dd-mon')和TO_CHAR(xxx, 'dd-mm')即可实现相同效果。
内容的提问来源于stack exchange,提问作者James Andersson
相关产品推荐
相关产品推荐

