如何从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
相关产品推荐
相关产品推荐

