You need to enable JavaScript to run this app. Pandas DataFrame 如何使用正则提取Purchase Id及对应数字
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame 如何使用正则提取Purchase Id及对应数字

基于pandas提取文本列中固定格式Purchase Id的实现方案

核心正则逻辑

要匹配目标片段,正则需要覆盖三个要素:

  • 固定起始匹配锚点:从字面量Purchase Id:开始匹配,避免匹配到文本中其他包含该关键词的无关片段
  • 中间分隔符匹配:用\s*兼容冒号后可能出现的任意数量空白(空格、制表符等),适配格式不统一的文本场景
  • 数字段匹配:用\d+匹配后续所有连续数字,遇到非数字字符(如示例中数字后接空格、Charge Id的位置)自动停止匹配,刚好截取到数字结束的位置,完全不会把后续的Charge Id内容混入提取结果

最终适配需求的基础正则为:r'(Purchase Id:\s*\d+)',外层括号为正则捕获组,是pandas文本提取方法正常返回内容的必要配置。

代码实现步骤

1. 加载并准备示例数据

构造与你提供的场景完全一致的测试DataFrame,便于验证效果:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    "Description": [
        "Online order Purchase Id: 14527903 Charge Id: 11111111",
        "Online order Purchase Id: 90762134 Charge Id: 33345872"
    ]
})

2. 执行文本提取

调用pandas内置的str.extract方法,逐行匹配目标片段:

df["Extracted_Content"] = df["Description"].str.extract(r'(Purchase Id:\s*\d+)', expand=False)

运行后得到的Extracted_Content列内容与期望的提取结果完全一致:

  • 第一行返回Purchase Id: 14527903
  • 第二行返回Purchase Id: 90762134

常见场景适配调整

  • 若遇到大小写不统一的文本(如小写purchase id写法),可导入re模块后在提取时增加忽略大小写参数:df["Description"].str.extract(r'(Purchase Id:\s*\d+)', expand=False, flags=re.IGNORECASE)
  • 若需要单独提取数字部分(不保留Purchase Id:前缀),可将捕获组位置调整到数字段:正则改为r'Purchase Id:\s*(\d+)',提取结果就会只返回纯数字字符串
  • 若匹配失败(对应行没有符合格式的内容),方法会自动返回NaN,可直接用于后续异常数据筛选

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 04:36:10