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

如何用Pandas构建姓名检测器?基于指定数据集的提取需求

用Pandas提取文本中的姓名(Mr./Mrs.后至逗号前)

嘿,我来帮你搞定这个姓名提取的需求!针对你给出的数据集,我们可以用Pandas的字符串匹配工具结合正则表达式轻松实现目标。

核心思路

利用Pandas的str.extract()方法,通过正则表达式精准定位Mr.或Mrs.之后、逗号之前的姓名片段,直接提取到新列中。

完整代码示例

import pandas as pd

# 构造你的示例数据集
data = {
    'Id.': [1, 2],
    'Text': [
        'Dear Mr. Alpha Terra, your food is delivered',
        'Dear Mrs. Betta Irina Viruva, your drink is delivered'
    ]
}
df = pd.DataFrame(data)

# 提取姓名:匹配Mr.或Mrs.之后、逗号前的内容
df['Name'] = df['Text'].str.extract(r'(?:Mr\.|Mrs\.)\s*(.*?)\,', expand=False)

# 查看最终结果
print(df)

正则表达式拆解

咱们来解析一下用到的正则(?:Mr\.|Mrs\.)\s*(.*?)\,:

  • (?:Mr\.|Mrs\.):非捕获分组,匹配Mr.或Mrs.(.是正则特殊字符,必须用\转义)
  • \s*:匹配任意数量的空白字符(包括空格、制表符等)
  • (.*?):捕获分组,非贪婪匹配任意字符,直到遇到后面的逗号(确保只提取姓名部分)
  • \,:匹配结尾的逗号(同样转义.的特殊含义)

扩展适配

如果你的数据里还有其他头衔(比如Ms.、Dr.),只需要修改正则的非捕获分组即可,示例:

df['Name'] = df['Text'].str.extract(r'(?:Mr\.|Mrs\.|Ms\.|Dr\.)\s*(.*?)\,', expand=False)

运行代码后,就能得到你预期的输出结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:53:44