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

如何在Pandas Series中用日期包含的年份替换该日期元素?

在Pandas Series中提取日期字符串的年份值

没问题,我来帮你搞定这个需求——把Series里的日期格式字符串(比如2/8/2014 0:00)替换成对应的年份,同时保留其他原有数据。下面是具体的实现步骤和代码:

步骤1:准备示例数据

首先把你提供的数据转换成Pandas Series:

import pandas as pd

# 你的原始数据
data = [2014, 180657, 2015, 153837, 2014, 72395, 2012, 69708, 2013, 61364, 2015, 54117, 2013, 3313, 2012, 1076, 
        '2/8/2014 0:00', 2, '7/3/2014 0:00', 2, '1/29/2015 0:00', 2, '9/1/2014 0:00', 2, '11/22/2014 0:00', 2, 
        '10/16/2014 0:00', 2]
# 创建Series
s = pd.Series(data)

步骤2:提取年份并处理数据

我们可以用正则表达式提取日期字符串中的四位年份,同时保留其他非日期数据:

# 统一转成字符串后提取四位数字(即年份),非日期值用原数据填充
s_processed = s.astype(str).str.extract(r'(\d{4})', expand=False).fillna(s)

# 可选:将结果转成数值类型(方便后续计算,不影响非数值数据)
s_processed = pd.to_numeric(s_processed, errors='ignore')

代码解释

  • astype(str):把Series里的所有元素转成字符串,这样数字和日期字符串都能统一处理。
  • str.extract(r'(\d{4})'):用正则匹配每个字符串中的第一个连续四位数字,正好对应日期里的年份;对于本来就是四位年份的数字(比如2014),转成字符串后也会被正确提取。
  • fillna(s):对于没有四位数字的元素(比如180657、2),extract会返回NaN,这里用原数据填充,保证这些值不变。
  • pd.to_numeric(..., errors='ignore'):把能转成数字的元素转成数值类型,非数值元素保持原样,不影响后续使用。

处理后的结果示例

处理后,原Series中的日期字符串会被替换成对应年份:

  • '2/8/2014 0:00' → 2014
  • '1/29/2015 0:00' → 2015
    其他非日期元素(比如180657、2、2013)都会保持原来的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:59:45