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

基于前缀过滤的Python正则表达式:泰坦尼克号Kaggle数据集处理问询

从泰坦尼克号姓名列提取称谓前缀的正则方法

嘿,我完全懂你说的正则反直觉的感觉——不过针对泰坦尼克号数据集的姓名格式,提取称谓前缀其实非常适合用正则来搞定!咱们一步步来:

首先看你的姓名样本格式:

0 Braund, Mr. Owen Harris
1 Cumings, Mrs. John Bradley (Florence Briggs Th...
2 Heikkinen, Miss. Laina
3 Futrelle, Mrs. Jacques Heath (Lily May Peel)
4 Allen, Mr. William Henry

所有姓名都是**「姓氏, 称谓. 名字(可能带括号备注)」**的结构,核心是要把逗号和点号之间的称谓(比如Mr、Mrs、Miss)提取出来。

核心实现代码

用Pandas的str.extract()方法搭配正则表达式,直接提取目标内容到新列:

# 提取称谓到新列Title
df_train['Title'] = df_train['Name'].str.extract(r',\s*([A-Za-z]+)\.', expand=False)

正则表达式解释

咱们拆解一下r',\s*([A-Za-z]+)\.':

  • ,\s*:匹配姓名里的逗号,以及逗号后面的零个或多个空格(处理可能的空格不一致情况)
  • ([A-Za-z]+):捕获组,匹配一个或多个大小写字母——这就是我们要的称谓前缀
  • \.:匹配称谓后面的点号,确保我们只提取到点号前的部分

验证结果

运行完上面的代码后,你可以查看新列:

print(df_train[['Name', 'Title']].head())

输出会是:

Name Title
0                              Braund, Mr. Owen Harris    Mr
1  Cumings, Mrs. John Bradley (Florence Briggs Th...   Mrs
2                               Heikkinen, Miss. Laina   Miss
3         Futrelle, Mrs. Jacques Heath (Lily May Peel)   Mrs
4                             Allen, Mr. William Henry    Mr

进阶:过滤特定前缀

如果只想保留常见的称谓(比如Mr/Mrs/Miss/Master等),可以后续做过滤:

# 定义有效称谓列表
valid_titles = ['Mr', 'Mrs', 'Miss', 'Master', 'Dr', 'Rev']

# 提取后替换非有效称谓为Other
df_train['Title'] = df_train['Name'].str.extract(r',\s*([A-Za-z]+)\.', expand=False)
df_train['Title'] = df_train['Title'].apply(lambda x: x if x in valid_titles else 'Other')

这样就能把一些少见的称谓(比如Lady、Sir、Capt等)统一标记为Other,方便后续分析。

内容的提问来源于stack exchange,提问作者Sam B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:42:27