如何用Pandas正确将dd/mm/yy格式日期转换为dd/mm/yyyy?
Pandas 正确转换 dd/mm/yy 格式日期为 dd/mm/yyyy 的方法
出现日月互换的问题,本质是pd.to_datetime默认会自动推断日期格式,当日期里的“日”数值≤12时,它会优先把第一个数字当成月份(比如03/05/22会被误解析成2022年3月5日,而非2022年5月3日),只有当“日”>12时才会按日/月逻辑解析,导致部分日期格式混乱。
给你两种靠谱的解决方法:
1. 明确指定输入格式(推荐)
直接通过format参数告诉Pandas你的日期是dd/mm/yy格式,彻底避免推断错误:
# 先转换成datetime类型 df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%y') # 如果需要输出成dd/mm/yyyy的字符串格式,再加一步strftime df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%y').dt.strftime('%d/%m/%Y')
参数说明:
%d:两位数字的日%m:两位数字的月%y:两位数字的年份(会自动补全为4位,比如22→2022,99→1999)%Y:四位数字的年份
2. 强制优先解析日(适合混合格式场景)
如果你的数据里同时存在dd/mm/yy和mm/dd/yy的混合格式,可以用dayfirst=True参数让Pandas优先把第一个数字当作日:
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
注意:如果所有日期的日都≤12,这个参数还是可能出现误判,所以优先推荐第一种方法。
内容的提问来源于stack exchange,提问作者NickH
相关产品推荐
相关产品推荐

