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

如何修改pandas正则表达式,从产品列中提取对应数量生成新列

你的原有代码存在两个核心问题:

  • 用方括号[]包裹剂型关键词属于语法错误:方括号的作用是匹配单个字符,内部的|会被识别为普通字符,无法实现「匹配任意一个完整剂型词」的效果
  • 没有覆盖你提到的所有剂型标识,缺少COMP、AMP等关键词

修改后的代码如下:

import re
# 正则说明:
# (\d+(?:\.\d+)?) : 匹配整数或小数作为提取的数量值
# \s* : 数量和剂型之间允许有0到多个空格
# (?:TAB|COMP|AMP|SOB|PAST|GRAG|CAP) : 非捕获组,匹配所有可能的剂型关键词,新增需要的剂型直接用|分隔追加即可
# \b : 单词边界,避免剂型关键词和其他单词拼接时被误匹配
df['PZ'] = df['PRODUCTS'].str.extract(r'(\d+(?:\.\d+)?)\s*(?:TAB|COMP|AMP|SOB|PAST|GRAG|CAP)\b', flags=re.IGNORECASE)

上述代码可以完全匹配你给出的所有样例,输出的PZ列和你预期的结果完全一致。如果后续有新的剂型需要适配,直接在正则的剂型分组里追加对应的关键词即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 02:48:02