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

Python清洗多格式日期列:提取日期字符串中的年份

提取混合格式日期字符串中的年份

针对你这种包含多种日期格式(含纯年份)的DataFrame列,有两种简单高效的方法提取年份:

方法一:正则表达式提取(最直接)

因为所有目标年份都是四位数字,不管它在字符串的哪个位置,直接用正则匹配四位数字即可:

import pandas as pd

# 假设你的列名为'birth_date'
df['birth_year'] = df['birth_date'].str.extract(r'(\d{4})').astype(int)

这个方法能覆盖所有情况:不管是Jan 10 2020、10/8/2019、June 14th 1980还是纯年份1913,都会精准提取出四位数字的年份,转成整数类型。

方法二:结合pandas to_datetime处理

如果想先尝试标准日期转换,再处理纯年份的行,可以这么做:

# 先尝试转换为datetime,转换失败的设为NaT
df['temp_datetime'] = pd.to_datetime(df['birth_date'], errors='coerce')
# 提取可转换行的年份,对转换失败的纯年份行直接转整数填充
df['birth_year'] = df['temp_datetime'].dt.year.fillna(df['birth_date'].astype(int)).astype(int)
# 删除临时列
df.drop('temp_datetime', axis=1, inplace=True)

这种方法先处理符合标准日期格式的行,纯年份的行因无法转成datetime会被标记为NaT,这时候直接把原字符串转成整数填充即可。

两种方法都能得到你需要的结果,推荐第一种正则方法,代码更简洁高效,适配所有你列出的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:40:36