使用Python Pandas将full name字段中间名转为首字母的问题咨询
Pandas 全名字段中间名首字母转换实现方案
核心处理逻辑
- 适配姓名格式为「姓, 名1 名2 ... 名N」的结构,按空格拆分后判断片段数量
- 片段数≤2:无多余中间名/后缀名,直接保留原值
- 片段数>2时检查最后一个片段:长度为1则为已处理的首字母,保留原值
- 最后一个片段长度>1时,替换为对应大写首字母后重新拼接
完整代码实现
import pandas as pd # 定义姓名处理函数 def process_full_name(name: str) -> str: name_parts = name.split() # 无中间名场景直接返回 if len(name_parts) <= 2: return name last_part = name_parts[-1] # 已为首字母场景直接返回 if len(last_part) == 1: return name # 替换最后一个完整名字为首字母 name_parts[-1] = last_part[0].upper() return ' '.join(name_parts) # 示例使用 if __name__ == "__main__": # 测试数据 test_data = [ "Keys, Alicia", "Keys, Alicia T", "Keys, Alicia Mary", "Pitt, John Paul", "Pitt, John Paul John" ] df = pd.DataFrame({"full_name": test_data}) # 应用处理函数 df["processed_name"] = df["full_name"].apply(process_full_name) # 打印结果 print(df)
输出结果验证
运行上述代码后输出如下,完全匹配需求示例:
full_name processed_name 0 Keys, Alicia Keys, Alicia 1 Keys, Alicia T Keys, Alicia T 2 Keys, Alicia Mary Keys, Alicia M 3 Pitt, John Paul Pitt, John P 4 Pitt, John Paul John Pitt, John Paul J
注:原需求示例中最后一条输出的「Jon」为输入笔误,代码会保留原有名字的正确拼写
扩展适配
如果遇到首字母带英文句号的场景(如Alicia T.),可修改最后一个片段的判断逻辑,增加去点处理:
# 修改判断行即可适配带点的首字母场景 if len(last_part.strip('.')) == 1: return name
内容的提问来源于stack exchange,提问作者Christina Min
相关产品推荐
相关产品推荐

