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

如何从DataFrame字符串列中提取指定文本并生成新列

pandas提取DataFrame字符串列方括号内文本的实现方法

核心实现依赖pandas字符串方法str.extract配合正则匹配,操作如下:

核心代码

假设你的原始字符串列名为column1,DataFrame变量名为df:

# 提取方括号内内容,无匹配的行返回NaN
df['column2'] = df['column1'].str.extract(r'\[(.*?)\]')

# 可选:无匹配的行返回空字符串而非NaN
df['column2'] = df['column1'].str.extract(r'\[(.*?)\]').fillna('')

代码说明

  • 正则表达式r'\[(.*?)\]逻辑:
    • \[、\]匹配字面量的左右方括号,避免正则语法冲突
    • (.*?)为非贪婪匹配,捕获两个方括号中间的所有内容,自动跳过无方括号的行

完整测试示例

import pandas as pd

# 构造符合你场景的测试数据
df = pd.DataFrame({
    'column1': ['All Unidades', 'Peter Lopez [QX1234]', 'Maria Garcia [AB7890]', 'Test content']
})

# 执行提取操作
df['column2'] = df['column1'].str.extract(r'\[(.*?)\]').fillna('')

print(df)

运行后输出结果:

column1 column2
0          All Unidades        
1  Peter Lopez [QX1234]  QX1234
2  Maria Garcia [AB7890] AB7890
3          Test content        

可选优化

如果方括号内的内容有固定格式(比如你示例里的2位大写字母+4位数字),可以用更精准的正则避免误匹配:

# 仅提取符合「2位大写字母+4位数字」规则的方括号内容
df['column2'] = df['column1'].str.extract(r'\[([A-Z]{2}\d{4})\]').fillna('')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:39:03