如何清理格式混乱的姓名列?解决分隔符、姓前置等格式问题
姓名数据清理实现方案
核心处理逻辑
针对数据集里的姓名格式问题,按以下步骤逐步清理:
- 替换分隔符:将所有点号
.替换为空格,统一分隔符格式 - 反转姓前置格式:识别带逗号
,的条目,将「姓, 名/头衔」结构反转成「名/头衔 姓」 - 规整空格:将连续多个空格合并为单个,避免格式混乱
Python 实现代码(基于 Pandas)
假设数据集已加载为 Pandas DataFrame,以下是具体实现:
import pandas as pd import re def clean_full_name(name): # 步骤1:替换点号为空格 name = name.replace('.', ' ') # 步骤2:处理姓前置的逗号格式 if ',' in name: last_part, first_part = name.split(',', 1) name = f"{first_part.strip()} {last_part.strip()}" # 步骤3:合并连续空格 name = re.sub(r'\s+', ' ', name).strip() return name # 示例数据加载 data = { 'ID': [1,2,3,4,5,6,7,8], 'Name': [ 'Ellie Joella', 'Antonio.Chaz', 'Dr. Ian Coretta', 'Doe, John', 'Marie.Eliza.Grey', 'Mason, Lary O', 'Winfred, Mr. Barry', 'Andrea.T.B.Shaw' ] } df = pd.DataFrame(data) # 应用清理函数 df['Cleaned_Name'] = df['Name'].apply(clean_full_name) print(df[['ID', 'Cleaned_Name']])
代码说明
- 替换点号:直接用字符串
replace方法将所有.转为空格,解决点分隔姓名的问题 - 处理逗号格式:通过
split(',', 1)只拆分一次,避免中间名带逗号的极端情况,然后反转拼接顺序 - 规整空格:用正则表达式
re.sub(r'\s+', ' ', name)合并连续空格,确保姓名各部分之间只有一个空格
验证结果
运行代码后,输出的Cleaned_Name列将完全符合目标格式:
| ID | Cleaned_Name |
|---|---|
| 1 | Ellie Joella |
| 2 | Antonio Chaz |
| 3 | Dr. Ian Coretta |
| 4 | John Doe |
| 5 | Marie Eliza Grey |
| 6 | Lary O Mason |
| 7 | Mr. Barry Winfred |
| 8 | Andrea T B Shaw |
内容的提问来源于stack exchange,提问作者SuperInes
相关产品推荐
相关产品推荐

