如何用正则表达式格式化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
相关产品推荐
相关产品推荐

