用 AI 清洗混乱日期格式:先盘点格式,再生成转换规则,歧义单独处理
清洗混乱日期时,不要把整列数据丢给 AI 逐条改写,而是让它做三件更擅长的事:盘点这列数据里有哪些格式、帮你写出确定性的转换代码、找出无法唯一判断的歧义值。 转换由代码执行,歧义由人决定,这样结果可复现、可检查,也不会出现模型“顺手”改错几条却难以发现的情况。
常见的混乱来源
- 分隔符不同:
2024-03-05、2024/3/5、2024.03.05; - 顺序不同:年月日、月日年、日月年混在一起,
03/05/2024无法确定是 3 月 5 日还是 5 月 3 日; - 中文写法:
2024年3月5日、3月5日(缺年份); - 紧凑写法:
20240305; - 两位年份:
24-3-5; - Excel 序列号:日期被当成数字导出,显示为一串整数;
- 带时间和时区:有的带时分秒,有的带时区,有的没有;
- 相对日期和无效值:“上周五”“待定”“0000-00-00”。
第 1 步:抽样,让 AI 盘点格式
先用代码提取这一列的去重值,抽取一部分(包括看起来最奇怪的那些)交给 AI:
下面是一列“下单日期”的去重样本。请:
1. 归纳出其中出现的所有日期格式类型,每类给出 2 个样本和一个格式描述;
2. 指出哪些格式存在歧义(例如无法区分月和日),并说明歧义原因;
3. 列出无法识别为日期的值;
4. 不要转换数据,只做盘点。
背景:数据来自【系统/地区】,时间范围大约在【起止年份】。
样本:
【粘贴样本】
提供数据来源和大致时间范围很重要,它是后面消除歧义的主要依据。
第 2 步:人工确认规则
根据盘点结果,由你来定规则,例如:
- 统一输出
YYYY-MM-DD,带时间的另存一列; xx/xx/yyyy格式按数据来源系统的习惯解释,并在文档中写明;- 两位年份统一解释为 20xx(前提是你确认时间范围);
- 缺年份、相对日期、无效值一律置空,并保留原值到备注列。
规则必须由懂业务的人拍板,AI 只能列出选项。
第 3 步:让 AI 写转换代码
请用 Python(pandas)写一个函数,把一列混乱日期按以下规则转换:
【粘贴你确认的规则】
要求:
- 按格式逐一显式匹配(正则或明确的格式字符串),不要依赖自动猜测格式的解析;
- 输出三列:标准化日期、原始值、状态(ok / ambiguous / invalid / missing_year);
- Excel 序列号按【1900 或 1904】日期系统转换;
- 附上覆盖每种格式的测试样例,包括歧义和无效值。
强调“不要依赖自动猜测”,是因为通用解析函数在遇到 03/05/2024 时会默默选一种解释,错误不会报出来。
第 4 步:单独处理歧义值
状态为 ambiguous 的记录不要自动决定,可以:
- 同一来源的其他记录中如果出现了日大于 12 的值(如
25/03/2024),通常可以推断该来源的顺序,但要人工确认; - 结合其他字段判断,例如发货日期不应早于下单日期;
- 实在无法判断的保持为空,在报告中说明数量和处理方式。
第 5 步:校验与抽查
转换后用规则检查,而不是用眼睛看:
- 日期是否落在合理时间范围内;
- 各状态的数量是否与预期相符;
- 业务逻辑约束(开始日期不晚于结束日期等)是否满足;
- 每种原始格式随机抽几条,人工对比原值和结果。
小结
AI 负责盘点和写代码,规则由人定,转换靠代码,歧义单独标记。这个思路同样适用于金额、电话、地址等字段的清洗,完整的表格清洗流程可参考 用 AI 清洗客户表格的工作流案例,需要写匹配规则时可以看 AI 写正则表达式指南。如果你主要在表格软件里处理,也可以参考 数据分析师用 AI 写 Excel 公式。