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

如何在Python函数中提取DataFrame姓名列的头衔并新增列?

解决DataFrame提取头衔的问题

错误原因分析

  1. 正则表达式错误:你写的".$"只会匹配字符串的最后一个字符,完全不符合提取头衔的需求。
  2. 循环赋值逻辑错误:遍历input_df["Name"]得到的是每个名字的字符串值,用这个字符串作为Title的索引赋值,会直接触发TypeError,这不是pandas的正确操作方式。

正确解决方案

方法一:用pandas字符串提取(推荐,高效简洁)

pandas的str.extract专门用于从字符串列提取匹配内容,直接生成新列:

import pandas as pd
import re

# 给原DataFrame添加Title列
input_df['Title'] = input_df['Name'].str.extract(r',\s*([A-Za-z]+\.)')

方法二:用apply配合正则匹配

如果需要自定义逻辑,也可以用apply调用函数处理:

import pandas as pd
import re

def get_title(name):
    # 匹配逗号后、空格(可选)开头的头衔(字母+点)
    match_result = re.search(r',\s*([A-Za-z]+\.)', name)
    # 匹配到就返回捕获的头衔,否则返回None
    return match_result.group(1) if match_result else None

input_df['Title'] = input_df['Name'].apply(get_title)

正则表达式说明

r',\s*([A-Za-z]+\.)'的含义:

  • ,:匹配名字里的逗号(比如"Myles, Mr...."里的逗号)
  • \s*:匹配0个或多个空格(兼容名字里逗号后可能有多个空格的情况)
  • ([A-Za-z]+\.):捕获组,匹配1个以上字母加一个点,正好对应Mr.、Mrs.、Dr.这类头衔

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:05:20