pd.to_datetime转换日期时单个单元格解析异常求助
问题描述
使用pd.to_datetime转换DataFrame的Date列时,原始日期格式为日/月/年,大部分单元格转换正确,但10/1/2022被错误转为2022-10-01(正确结果应为2022-01-10),其余单元格均能正常转为yyyy-mm-dd格式。
原始DataFrame示例:
Customer ID Date ABC123 10/1/2022 ABC223 30/12/2021 ABC456 21/6/2022 ABC876 30/3/2022
执行的转换代码:
df['Date'] = pd.to_datetime(df['Date'])
转换结果:
Customer ID Date ABC123 2022-10-01 ABC223 2021-12-30 ABC456 2022-06-21 ABC876 2022-03-30
解决方案
问题根源是pd.to_datetime的自动推断逻辑:当日期中的日、月数值都在1-12范围内时,pandas会默认按月/日/年(美式格式)解析;而像30/12/2021这种日数值超过12的情况,会自动识别为日/月/年格式。
要强制统一按指定格式解析,直接在pd.to_datetime中添加format参数即可:
df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')
参数说明:
%d:代表两位数字的日(单数字日会自动补0,比如1号解析为01)%m:代表两位数字的月%Y:代表四位数字的年
执行上述代码后,10/1/2022会被正确转换为2022-01-10,其余日期也将保持正确的yyyy-mm-dd格式。
内容的提问来源于stack exchange,提问作者Ziggy
相关产品推荐
相关产品推荐

