pandas如何将列内混合格式的所有日期数据统一转换为datetime格式
混合日期格式统一转换方案
直接使用pandas内置方法即可快速完成转换,无需繁琐的手动逐行处理:
方案1:自动识别(最快捷,适合绝大多数场景)
pd.to_datetime()默认支持自动识别你提到的两种常见日期格式,千万级数据量也可以快速处理:
import pandas as pd # 直接转换为datetime类型,两种格式会被自动统一识别 df['date'] = pd.to_datetime(df['date']) # 如果需要最终输出为和多数样本一致的`YYYY-MM-DD`字符串格式,追加以下代码: df['date'] = df['date'].dt.strftime('%Y-%m-%d')
方案2:显式匹配(更稳妥,避免极端场景识别错误)
如果担心自动识别出现误判,可以先对8位纯数字格式的日期做定向处理,再统一转换:
# 先统一转为字符串类型 df['date'] = df['date'].astype(str) # 筛选出8位纯数字的日期行 num_date_mask = df['date'].str.match(r'^\d{8}$') # 定向转换纯数字格式的日期为标准字符串格式 df.loc[num_date_mask, 'date'] = pd.to_datetime(df.loc[num_date_mask, 'date'], format='%Y%m%d').dt.strftime('%Y-%m-%d') # 统一转换全列datetime类型 df['date'] = pd.to_datetime(df['date'])
内容的提问来源于stack exchange,提问作者caasswa
相关产品推荐
相关产品推荐

