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

如何在Pandas数据框中替换逗号并插入&符号处理人名?

姓名格式转换解决方案

数据集

import pandas as pd
df = pd.DataFrame({'name':{0: 'John,Smith', 1: 'Peter,Blue', 2:'Larry,One,Stacy,Orange' , 3:'Joe,Good' , 4:'Pete,High,Anne,Green'}})

原始输出:

name
0   John,Smith
1   Peter,Blue
2   Larry,One,Stacy,Orange
3   Joe,Good
4   Pete,High,Anne,Green

需求

  • 将逗号替换为单个空格
  • 当单元格包含两个人名时,在第一个人的姓氏后、第二个人的名字前插入“&”符号

期望输出:

name
0   John Smith
1   Peter Blue
2   Larry One & Stacy Orange
3   Joe Good
4   Pete High & Anne Green

尝试的代码(仅实现逗号替换)

df['name']= df['name'].str.replace(r',', '', regex=True) 

解决方案

可以通过正则表达式替换同时完成两个需求,以下两种方法任选:

方法一:分步处理

先统一替换逗号为空格,再针对双姓名结构插入&:

# 替换所有逗号为空格
df['name'] = df['name'].str.replace(',', ' ', regex=True)
# 匹配"名 姓 名 姓"结构,在中间插入&
df['name'] = df['name'].str.replace(r'(\w+ \w+) (\w+ \w+)', r'\1 & \2', regex=True)

方法二:单正则一次性完成

匹配不同逗号分隔的姓名结构,分别处理:

df['name'] = df['name'].str.replace(
    r'(\w+),(\w+),(\w+),(\w+)', r'\1 \2 & \3 \4', regex=True
).str.replace(r'(\w+),(\w+)', r'\1 \2', regex=True)

逻辑说明

  • 第一个正则(\w+),(\w+),(\w+),(\w+)匹配四个逗号分隔的片段(对应两个完整姓名:名+姓,名+姓),替换时将逗号转为空格并在中间插入&
  • 第二个正则(\w+),(\w+)匹配两个逗号分隔的片段(单个姓名),仅将逗号转为空格

免责声明:本表中所有姓名均为虚构,无意与任何真实人物(在世或已故)产生关联或被推断关联。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:41:42