Pandas单列混合日期格式转换为统一yyyy-mm-dd格式求助
解决混合日期格式转换问题
问题分析
你的日期列存在两种混合格式:
dd-mm-yyyy(如18-04-2022)yyyy-dd-mm(如2016-10-05)
直接使用pd.to_datetime()会将后者错误识别为yyyy-mm-dd,导致日期解析错误。我们需要针对两种格式分别指定解析规则,再合并结果。
解决方案
通过判断日期字符串的格式特征(以4位数字开头的为yyyy-dd-mm格式),分别指定解析格式后合并:
import pandas as pd import numpy as np # 初始化数据 df = pd.Series('''18-04-2022 2016-10-05'''.split('\n') , name='date' ).to_frame() # 分别处理两种格式的日期 df['post_date'] = np.where( # 判断是否为yyyy-dd-mm格式(开头是4位数字) df['date'].str.match(r'^\d{4}-'), # 按yyyy-dd-mm解析 pd.to_datetime(df['date'], format='%Y-%d-%m'), # 按dd-mm-yyyy解析 pd.to_datetime(df['date'], format='%d-%m-%Y') ) print(df)
输出结果
date post_date 0 18-04-2022 2022-04-18 1 2016-10-05 2016-05-10
说明
df['date'].str.match(r'^\d{4}-'):用正则表达式匹配以4位数字开头的日期字符串,精准识别yyyy-dd-mm格式。- 对匹配到的日期用
format='%Y-%d-%m'解析,确保2016-10-05被正确识别为2016年5月10日;其余日期用format='%d-%m-%Y'解析。
内容的提问来源于stack exchange,提问作者Todd
相关产品推荐
相关产品推荐

