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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:36:02