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

