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

如何在pandas dataframe中提取字符串的指定部分(年份后两位)

解决方案

直接使用pandas字符串方法结合正则表达式匹配完整的20xx格式年份,不受空格数量、其他位置零散20字符干扰:

# 匹配所有20开头的四位数字,直接捕获后两位存入Year列
new_data['Year'] = new_data['Name'].str.extract(r'20(\d{2})')

逻辑说明

  • 正则表达式r'20(\d{2})会优先匹配符合20xx格式的四位连续数字,括号内的\d{2}是捕获组,str.extract会直接返回捕获到的两位数字,也就是年份后两位。
  • 针对你提到的异常场景:
    • 字符串'TON RO20 2018 N'中,RO20不符合20xx格式不会被匹配,只会匹配到后面的2018提取出18
    • 字符串'TON 2020 N'会匹配到2020提取出20
      完全覆盖你给出的所有测试场景。

特殊场景适配

如果单行字符串中存在多个20xx格式的年份,可按需求调整:

  • 取第一个出现的年份:上述代码即可,str.extract默认返回第一个匹配项
  • 取最后一个出现的年份:使用如下代码
new_data['Year'] = new_data['Name'].str.extractall(r'20(\d{2})').groupby(level=0).last()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:54:03