Python中如何将多格式pandas日期列转换为yyyy-m-dd标准格式
混合格式日期列统一转换解决方案
报错原因
你遇到的unknown string format报错核心原因是:Date列存在/、-两类日期分隔符,还混合了带时间后缀的格式,默认模式下pd.to_datetime无法自动推断所有字符串的日期格式。你手动拆分冒号的操作没有必要,pd.to_datetime本身原生支持解析带时间后缀的日期字符串。
正确实现代码
步骤1:统一解析为datetime类型
# 开启自动格式推断,适配混合输入格式,异常值转为NaT方便后续排查 df['Date'] = pd.to_datetime(df['Date'], infer_datetime_format=True, errors='coerce')
步骤2:转换为指定的yyyy-m-dd字符串格式
# %-m、%-d表示不保留月、日的前导零,如需保留前导零可改为%Y-%m-%d df['Date'] = df['Date'].dt.strftime('%Y-%-m-%-d')
可选适配参数
- 如果你的日期规则是日在前、月在后(例如
8-5-2021代表5月8日),可在解析时额外添加dayfirst=True参数:df['Date'] = pd.to_datetime(df['Date'], infer_datetime_format=True, dayfirst=True, errors='coerce') - 如果你需要输出带前导零的
yyyy-mm-dd格式,将strftime的格式参数替换为%Y-%m-%d即可。
内容的提问来源于stack exchange,提问作者alwayzconfused
相关产品推荐
相关产品推荐

