如何将数据列中代表月日的3位整数转换为YYYY-MM-DD标准日期
3位月日整数转2022年标准YYYY-MM-DD日期实现方案
核心转换逻辑:该编码规则下,数字最后两位固定为日期值,剩余左侧部分为月份值,统一补全年份为2022,月份不足2位时补前导0,最终拼接为标准日期格式即可。以下是不同场景下可直接复用的实现方式:
Excel/WPS表格实现
若原始数据从A2单元格开始存放在A列,直接在相邻单元格输入以下公式,下拉填充整列即可得到结果:=TEXT(DATE(2022,INT(A2/100),MOD(A2,100)),"yyyy-mm-dd")逻辑拆解:
INT(A2/100)对数值除以100取整,得到月份值(如410计算后得到4,对应4月)MOD(A2,100)取数值除以100的余数,得到日期值(如410计算后得到10,对应10日)- 通过DATE函数生成2022年对应日期,再用TEXT函数格式化为YYYY-MM-DD格式。该公式同时兼容10-12月的4位编码值(如1023对应10月23日),无需额外修改。
Python Pandas批量处理实现
若使用Pandas处理表格数据,可直接用以下代码完成转换:import pandas as pd # 假设存储3位整数的列名为raw_date df['formatted_date'] = pd.to_datetime( '2022' + df['raw_date'].astype(str).str.zfill(3), format='%Y%m%d' ).dt.strftime('%Y-%m-%d')逻辑拆解:先将整数转为字符串并统一补为3位长度,前面拼接固定年份2022得到6/7位日期字符串,按年-月-日规则解析为日期类型后,格式化为要求的输出格式。
原生Python列表处理实现
若直接处理数值列表,无需依赖第三方库即可实现:raw_dates = [410, 417, 505, 522] result = [] for val in raw_dates: month = val // 100 day = val % 100 result.append(f"2022-{month:02d}-{day:02d}")运行后
result输出为['2022-04-10', '2022-04-17', '2022-05-05', '2022-05-22'],完全匹配目标效果。
校验提示:转换完成后可以抽查几个值确认月日拆分是否正确,只要原始数据符合「最后两位为日期」的编码规则,上述方法转换结果不会出错。
内容的提问来源于stack exchange,提问作者excel_noob
相关产品推荐
相关产品推荐

