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

如何用正则表达式格式化DataFrame日期列及缺失日期处理

提取DataFrame中日期字符串并统一格式的解决方案

一、用正则表达式提取目标日期

完全可以用正则搞定你的需求。观察你给出的所有日期格式,核心都是「1-2位数字 + 英文月份 + 4位年份」的结构,不管前后有没有城市名称、更新备注这类冗余内容,直接匹配这个核心模式就行。

实现代码

import pandas as pd

# 模拟你的DataFrame
data = {
    'dates': [
        '5 July 2023',
        'Brussels, 18 September 1998',
        'Frankfurt/Brussels, 18 September 1998',
        'Frankfurt,Brussels, 18 September 1998',
        '11 April 2019[updated on 11 April 2019 at 11:15 CET ]'
    ]
}
df = pd.DataFrame(data)

# 用正则提取核心日期
df['dates'] = df['dates'].str.extract(r'(\d{1,2} \w+ \d{4})')

print(df)

正则说明

  • \d{1,2}:匹配1位或2位的日期数字(比如5、18)
  • \w+:匹配英文月份单词(比如July、September)
  • \d{4}:匹配4位年份数字(比如2023、1998)
  • 括号():把匹配到的核心日期作为捕获组提取出来,自动忽略前后的冗余内容

执行后你的DataFrame会输出:

dates
0      5 July 2023
1  18 September 1998
2  18 September 1998
3  18 September 1998
4    11 April 2019

二、缺失日期的处理建议

两种方案各有适用场景,根据你的业务需求选择:

  • 删除整行:如果缺失日期的记录对你的分析没有价值,直接删掉最省心:
    df = df.dropna(subset=['dates'])
    
  • 填充指定日期:如果需要保留这些行,就用你指定的默认日期填充(比如用01 January 1900作为占位):
    df['dates'] = df['dates'].fillna('01 January 1900')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:55:10