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

检测DataFrame日期列并转换为datetime64类型(格式化为dd/mm/yyyy)

Pandas日期列处理:转换类型、统一格式并替换"0"为NaN

原始数据

import pandas as pd

df = pd.DataFrame({
    'Date1': ['20200422', '20200422.0', '20200501', '0'],
    'Date2': ['15/05/2023', '0', '20230520', '25/06/2023'],
    'Other1': ['Text1', 'Text2', 'Text3', 'Text4'],
    'Other2': [10, 20, 30, 0]
})

解决方案代码

# 指定需要处理的日期列
target_cols = ['Date1', 'Date2']

for col in target_cols:
    # 替换所有"0"、"0.0"为缺失值标记
    df[col] = df[col].replace({'0': pd.NA, '0.0': pd.NA})
    # 自动识别多种日期格式,转换为datetime64类型,无法识别的转为NaT
    df[col] = pd.to_datetime(df[col], errors='coerce')
    # 统一格式为dd/mm/yyyy(若需保持datetime类型,可注释掉此行)
    df[col] = df[col].dt.strftime('%d/%m/%Y').replace('NaT', pd.NA)

关键说明

  1. 替换无效值:先把列中的"0"和"0.0"替换为pd.NA,避免后续日期转换时将其误识别为有效日期。
  2. 日期类型转换:pd.to_datetime支持自动识别多种输入格式(如YYYYMMDD、DD/MM/YYYY),errors='coerce'参数会把无法转换的内容转为NaT(datetime类型的缺失值)。
  3. 格式统一:如果需要将日期显示为dd/mm/yyyy格式的字符串,使用dt.strftime格式化,同时把NaT转为pd.NA保证缺失值格式一致;如果不需要转成字符串,仅保留datetime64类型,可跳过最后一行代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:03:19