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

如何统一数据框单列中不一致的Date & Time日期时间格式

数据框混合格式日期时间列统一方案

核心处理逻辑是放弃手动写正则逐类替换的思路,用支持多格式自动匹配的日期解析函数逐行识别,避免格式错配产生NA值。

R语言处理方案(适配data.frame/tibble)

  • 优先使用lubridate包的parse_date_time()函数,提前传入列内存在的所有日期时间格式规则,函数会自动逐行匹配对应规则完成解析:
# 加载依赖
library(lubridate)
library(dplyr)

# 假设原始数据框为df,存在格式问题的列名为Date & Time
df <- df %>%
  mutate(
    `Date & Time` = parse_date_time(
      x = `Date & Time`,
      # 按列内实际存在的两种格式传入匹配规则
      orders = c("mdy HM", "ymd HMS"),
      tz = "Asia/Shanghai" # 按需替换为数据对应的时区
    )
  )

规则对应说明:

  • mdy HM匹配mm/dd/yy HH:MM格式:m代表月、d代表日、y代表两位年份、H代表24小时制小时、M代表分钟
  • ymd HMS匹配yyyy/mm/dd HH:MM:SS格式:y代表四位年份、S代表秒
  • 解析完成后得到标准POSIXct类型的日期时间值,如果需要统一输出为固定样式的字符串,可以额外套一层format()函数指定输出格式,比如统一输出为yyyy-mm-dd HH:MM:SS:
df <- df %>%
  mutate(
    `Date & Time` = format(`Date & Time`, "%Y-%m-%d %H:%M:%S")
  )
  • 解析完成后做校验:运行sum(is.na(df$Date & Time)),如果返回结果为0说明全量值解析成功;如果存在非0的NA值,提取对应位置的原始值排查是否存在其他未覆盖的异常格式,补充到orders参数的规则列表里即可。

Python Pandas处理方案

  • 直接使用pandas内置的pd.to_datetime()函数,开启格式自动推断参数即可识别混合格式:
import pandas as pd

# 假设原始数据框为df,存在格式问题的列名为"Date & Time"
df["Date & Time"] = pd.to_datetime(
    df["Date & Time"],
    infer_datetime_format=True
)

# 如需统一输出为指定字符串格式,执行以下代码
df["Date & Time"] = df["Date & Time"].dt.strftime("%Y-%m-%d %H:%M:%S")
  • 校验方法:运行df["Date & Time"].isna().sum(),确认NA数量是否符合预期,存在异常值时单独排查补规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:18:25