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

多格式日期修复:提取日字段并结合年月列重构统一日期

处理混合格式日期的DataFrame:提取日并重构统一日期格式

给定的DataFrame包含多种日期格式(如yyyy-mm-dd、dd/mm/yyyy、mm/dd/yyyy及带时间戳的格式),同时已有year和month列。需要完成以下操作:

  • 从混合格式的日期中提取日,存入Day_from_date列
  • 结合year、month和提取出的日,生成统一格式的New_date列

示例DataFrame

import pandas as pd

df = pd.DataFrame([
    ['2023-01-02 00:00:00','01','2023'],
    ['2023-01-02 00:00:00','01','2023'],
    ['01/16/2023','01','2023'],
    ['01/16/2023','01','2023'],
    ['01/16/2023','01','2023'],
    ['02/13/2023','02','2023'],
    ['02/13/2023','02','2023'],
    ['02/13/2023','02','2023'],
    ['26/11/2018','11','2018'],
    ['26/11/2018','11','2018'],
    ['26/11/2018','11','2018'],
    ['26/11/2018','11','2018'],
    ['27/11/2018','11','2018'],
    ['27/11/2018','11','2018'],
], columns=['Date','month','year'])

解决方案代码

# 解析混合格式日期为datetime对象,自动识别常见格式,dayfirst适配dd/mm/yyyy类格式
df['parsed_date'] = pd.to_datetime(df['Date'], dayfirst=True, errors='coerce')

# 提取日并转为两位数字符串格式
df['Day_from_date'] = df['parsed_date'].dt.day.astype(str).str.zfill(2)

# 用year、month、Day_from_date重构统一yyyy-mm-dd格式的日期
df['New_date'] = pd.to_datetime({
    'year': df['year'],
    'month': df['month'],
    'day': df['Day_from_date']
}).dt.strftime('%Y-%m-%d')

# 移除中间解析列(可选)
df = df.drop('parsed_date', axis=1)

print(df)

代码说明

  1. 日期解析:pd.to_datetime自动识别多数常见日期格式,dayfirst=True优先处理日在前的斜杠分隔日期,errors='coerce'将无法解析的日期转为NaT便于排查。
  2. 提取日:从解析后的datetime对象中提取日,转为字符串并补零,保证统一的两位数格式。
  3. 重构统一日期:通过三列生成datetime对象,再格式化为标准的yyyy-mm-dd字符串。

输出结果示例

DatemonthyearDay_from_dateNew_date
2023-01-02 00:00:00012023022023-01-02
2023-01-02 00:00:00012023022023-01-02
01/16/2023012023162023-01-16
01/16/2023012023162023-01-16
...............

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:52:36