You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 23:20:28