如何在Pandas中正确解析以点分隔的日期格式?
解决Pandas日期解析错误的高效方案
嗨,别担心,这个问题完全不用循环就能解决!Pandas的pd.to_datetime本身就有专门的参数来处理自定义日期格式,比逐行处理高效多了。
问题根源
你遇到的ParserError是因为Pandas默认的日期解析器把中间的数字当成了月份(比如17.14.11里的14),但月份只能是1-12,所以报错。核心是要明确告诉Pandas你的日期字符串每个部分代表什么。
具体解决方案
根据你的日期格式和错误提示,你的日期应该是两位年份.日期.月份的格式(比如17.14.11代表2017年11月14日,12.6.5代表2012年5月6日),直接用format参数指定解析规则即可:
1. 解析12.6.5或18.26.01格式的日期
import pandas as pd # 统一指定格式,自动处理一位/两位的日、月 youtube_US['trending_date'] = pd.to_datetime(youtube_US['trending_date'], format='%y.%d.%m')
格式参数说明
%y:匹配两位数字的年份(比如12对应2012,18对应2018)%d:匹配日期(一位数字会自动补零,比如6转为06)%m:匹配月份(一位数字自动补零,比如5转为05)
处理格式不一致的情况
如果数据里有少量格式不统一的记录,可以加上errors='coerce'参数,把解析失败的转为NaT(Pandas的缺失日期值),方便后续排查:
youtube_US['trending_date'] = pd.to_datetime(youtube_US['trending_date'], format='%y.%d.%m', errors='coerce')
为什么不用循环?
Pandas是基于向量化操作设计的,pd.to_datetime内部已经做了优化,处理速度比手动循环快几个数量级,完全没必要写循环去逐行解析。
内容的提问来源于stack exchange,提问作者Ruthba Yasmin
相关产品推荐
相关产品推荐

