多格式日期转换问题:兼容带/不带点的日期转为MM:DD:YYYY格式
解决混合格式日期转换问题
直接指定单一格式肯定兼容不了两种带点/不带点的月份缩写情况,给你两个靠谱的解决方案:
方案一:让pandas自动推断格式
pandas的pd.to_datetime本身具备自动识别多种日期格式的能力,不用手动指定format参数,直接解析后再转成目标格式即可:
import pandas as pd # 自动解析所有混合格式的日期 df['Customer DOB'] = pd.to_datetime(df['Customer DOB'], infer_datetime_format=True) # 转换为MM:DD:YYYY格式 df['Customer DOB'] = df['Customer DOB'].dt.strftime('%m:%d:%Y')
这个方法简单省心,绝大多数混合格式的日期都能准确识别。
方案二:先统一清洗日期字符串
如果担心自动推断出现异常,可以先把所有日期里的月份缩写点去掉,统一成不带点的格式,再用固定格式解析:
# 先移除所有日期字符串中的'.'字符 df['Customer DOB'] = df['Customer DOB'].str.replace('.', '', regex=False) # 用统一的'%b %d, %Y'格式解析日期 df['Customer DOB'] = pd.to_datetime(df['Customer DOB'], format='%b %d, %Y').dt.strftime('%m:%d:%Y')
这样处理后,不管原来的月份是Mar.还是May,都会变成Mar和May,就能用同一个格式字符串完成解析了。
内容的提问来源于stack exchange,提问作者AdR
相关产品推荐
相关产品推荐

