pandas如何将带星期前缀的日期列正确转换为datetime类型
代码失效原因
你当前使用的%x格式符属于环境依赖的格式标记,它会读取当前操作系统、区域语言设置下的本地默认日期格式做匹配,本身没有固定的格式定义:
- 比如在中文简体环境下
%x通常对应YYYY/MM/DD格式,欧洲区域多为DD/MM/YYYY格式,和你数据里固定的星期 - 月/日/年结构完全不匹配,自然无法完成解析。 - 就算是美式英语环境,不同系统版本下
%x的输出也可能存在细节差异,用它做固定格式的日期解析没有稳定性可言。
正确实现代码
直接写死和数据格式完全对应的明确格式串即可,不要使用依赖环境的格式标记:
import pandas as pd df['timestamp'] = pd.to_datetime( df['timestamp'], format='%A - %m/%d/%Y' )
格式串说明
%A:匹配完整英文星期名称,比如Thursday、Monday%m/%d/%Y:固定匹配月/日/四位年份的斜杠格式,自动兼容1位、2位的月/日数值(比如6/13、10/5这类写法都能正常识别),不受系统环境影响,解析结果稳定。
如果数据里存在星期和实际日期不匹配的脏值,可以在参数里加errors='coerce',把解析失败的值自动转为NaT空时间类型,方便后续排查清洗。
内容的提问来源于stack exchange,提问作者Ross Dickinson
相关产品推荐
相关产品推荐

