如何用Python和Pandas将DataFrame中数字日期转为2019-11-10格式
解决DataFrame数字日期转标准格式的问题
问题原因
你之前用pd.to_datetime(df.date)出错,是因为pandas默认把数字类型的输入当成Unix时间戳(毫秒级)解析,20191028被识别为从1970-01-01开始的毫秒数,所以得到了错误的1970年日期。
解决方案
针对数字格式的日期(如20191110),需要明确告诉pandas日期的格式,以下是几种高效处理方式:
1. 直接指定日期格式(推荐)
利用format参数指定输入的日期格式为%Y%m%d(4位年+2位月+2位日),无需转换类型,效率更高:
df['date'] = pd.to_datetime(df['date'], format='%Y%m%d')
2. 先转字符串再解析
如果担心数字格式有异常(比如带小数),可以先把列转成字符串再解析:
df['date'] = pd.to_datetime(df['date'].astype(str), format='%Y%m%d')
3. 处理无效值
如果列中存在不符合%Y%m%d格式的内容,可以添加errors='coerce'参数,将无效值转为NaT(缺失日期),方便后续清洗:
df['date'] = pd.to_datetime(df['date'], format='%Y%m%d', errors='coerce')
内容的提问来源于stack exchange,提问作者lis
相关产品推荐
相关产品推荐

