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

如何将多种日期格式统一为datetime类型并格式化为dd/mm/yyyy?

解决混合类型日期列的转换与格式化问题

核心逻辑

你的StartDate列混合了带单引号的字符串日期和原生datetime对象,直接调用pd.to_datetime()会因类型不统一导致原生datetime被解析为NaT。我们需要先区分两种类型分别处理,再统一格式。

具体操作步骤

  1. 分别解析不同类型的日期值
    用apply遍历列内每个元素,根据类型执行不同的解析逻辑:

    • 字符串类型:先去除首尾的单引号,再转为pandas datetime类型;
    • 原生datetime对象:直接转为pandas兼容的datetime类型。

    代码示例:

    import pandas as pd
    from datetime import datetime
    
    def parse_mixed_dates(val):
        if isinstance(val, str):
            # 移除字符串首尾的单引号
            clean_date_str = val.strip("'")
            return pd.to_datetime(clean_date_str, format='%d/%m/%Y')
        elif isinstance(val, datetime):
            # 将原生datetime转为pandas datetime类型
            return pd.to_datetime(val)
        else:
            return pd.NaT
    
    df['StartDate'] = df['StartDate'].apply(parse_mixed_dates)
    
  2. 格式化为dd/mm/yyyy格式(可选)
    如果需要将datetime类型列转换为dd/mm/yyyy格式的字符串,使用dt.strftime()方法:

    df['StartDate_Formatted'] = df['StartDate'].dt.strftime('%d/%m/%Y')
    

结果验证

处理后可以通过df['StartDate'].nunique()检查唯一值数量,应该能恢复到611个(或符合预期的数值),且无NaT值残留。


内容的提问来源于stack exchange,提问作者Robin Keij

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:42:03