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

如何提取DataFrame中Amend/Amendment后的三位修订编号?

Pandas提取合同修订编号实现方案

核心思路

用pandas字符串方法的正则提取能力,精准匹配Amend/Amendment前缀后跟随的三位数字,未命中规则的行统一填充指定值。

完整实现代码

import pandas as pd

# 构造示例测试数据
df = pd.DataFrame({
    'Contract': [
        'Amend 001 randomgibberish',
        'Amend 010 randomgibberish',
        'Amendment 003 randomgibberish',
        'randomgibberish 002',
        'randomgibberish 100'
    ]
})

# 正则匹配提取编号,未匹配项填充NotFound
df['Amendment'] = df['Contract'].str.extract(
    r'Amend(?:ment)?\s+(\d{3})', 
    expand=False
).fillna('NotFound')

规则说明

正则表达式r'Amend(?:ment)?\s+(\d{3})'的匹配逻辑完全贴合需求:

  • Amend(?:ment)?:同时匹配Amend和Amendment两个前缀,非捕获组不会干扰目标内容提取
  • \s+:匹配前缀和数字之间的一个或多个空白字符,兼容多空格、制表符等分隔场景
  • (\d{3}):捕获连续三位数字作为提取结果,自动保留前导零格式

结果验证

运行代码后打印DataFrame,输出完全符合预期:

Contract Amendment
0      Amend 001 randomgibberish       001
1      Amend 010 randomgibberish       010
2  Amendment 003 randomgibberish       003
3           randomgibberish 002  NotFound
4           randomgibberish 100  NotFound

适配调整提示

  • 如果实际数据中前缀和数字之间可能没有空格,可将正则里的\s+替换为\s*,兼容零个或多个空白的场景
  • 如果需要匹配大小写不敏感的场景(比如amend、AMEND),可以在extract方法前加.str.lower()统一转小写后再匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:12:28