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

如何在Pandas DataFrame中提取方括号内的ATT编码子串

解决方案

核心思路

用Pandas的str.extract结合正则表达式,精准匹配方括号内以ATT开头、后续跟数字的编码,避免提取多余内容。

代码实现

提取单个匹配编码

如果每行文本里只有一个目标编码,用以下代码生成新列:

df2['ATT_Code'] = df2['Report Text'].str.extract(r'(?<=\[)ATT\d+(?=\])')
  • 正则说明:
    • (?<=\[):确保目标编码前是左方括号[
    • ATT\d+:匹配ATT开头,后续跟1个或多个数字的内容
    • (?=\]):确保目标编码后是右方括号]

提取多个匹配编码

如果每行文本里有多个[ATTxx]格式的编码,可提取所有匹配项并拼接:

df2['ATT_Codes'] = df2['Report Text'].str.findall(r'(?<=\[)ATT\d+(?=\])').str.join(', ')

处理无匹配的情况

若部分文本没有符合条件的编码,可填充默认值:

df2['ATT_Code'] = df2['Report Text'].str.extract(r'(?<=\[)ATT\d+(?=\])').fillna('无匹配编码')

为什么之前的方法不行?

你之前用str.split("ATT",1).str[-1]会把ATT之后的所有内容都提取出来,包括方括号外的文本,而正则匹配能精准限定在方括号范围内,只提取目标编码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:30:53