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

如何将Pandas DataFrame中混合格式的Datetime列统一为指定格式

处理混合格式日期时间列的解决方案

针对你100万行数据的场景,推荐用Pandas的矢量化操作高效处理,避免循环带来的性能损耗,具体逻辑如下:

核心思路

  1. 分别用两种目标格式尝试解析datetimes列,解析失败的行会被标记为NaT(Not a Time)
  2. 将两次解析的结果合并,补全彼此的缺失值
  3. 把统一后的日期时间序列格式化为YYYY-MM-DD字符串

代码实现

import pandas as pd

# 假设你的DataFrame名为df
# 第一步:用两种格式分别解析
format1 = "%Y-%m-%d %H:%M:%S"  # 年-月-日 时分秒格式
format2 = "%Y-%d-%m %H:%M:%S"  # 年-日-月 时分秒格式

parsed1 = pd.to_datetime(df['datetimes'], format=format1, errors='coerce')
parsed2 = pd.to_datetime(df['datetimes'], format=format2, errors='coerce')

# 第二步:合并解析结果,补全缺失值
df['datetime_unified'] = parsed1.combine_first(parsed2)

# 第三步:格式化为目标字符串格式
df['date_formatted'] = df['datetime_unified'].dt.strftime('%Y-%m-%d')

# 可选:如果不需要保留原列和中间列,可直接替换原列
# df['datetimes'] = df['datetime_unified'].dt.strftime('%Y-%m-%d')
# df.drop(columns=['datetime_unified'], inplace=True)

关键细节说明

  • errors='coerce':让解析失败的行返回NaT而非抛出错误,确保两次解析能覆盖所有有效行
  • combine_first():优先取parsed1的有效值,parsed1为NaT的行则用parsed2的值,完美合并两种格式的解析结果
  • 矢量化操作:整个过程是Pandas批量处理,处理100万行数据的速度远快于逐行循环判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:15:19