如何使用Pandas替换DataFrame中Address列除首个外的所有逗号为-
解决方案
你可以用pandas实现该需求,以下是两种经过验证的可行方案,两种方案均适配你给出的string类型Address字段,无需额外做类型转换:
方案1:拆分拼接法(无正则基础也可快速理解)
逻辑为按第一个逗号把每行Address拆为前后两部分,将后半部分所有逗号替换为横杠后再和前半部分拼接:
# 仅按第一个逗号拆分Address为两列 split_df = df['Address'].str.split(',', n=1, expand=True) # 替换第二部分所有逗号为横杠后拼接 df['Address'] = split_df[0] + ',' + split_df[1].fillna('').str.replace(',', '-') # 去除末尾多余的逗号(针对原Address无逗号的场景) df['Address'] = df['Address'].str.rstrip(',')
方案2:正则替换法(代码更简洁,执行效率更高)
用正向回顾正则匹配除第一个逗号外的所有逗号,直接替换为横杠,空值行自动跳过不处理:
import re df['Address'] = df['Address'].str.replace(r'(?<=,.*),', '-', regex=True, na_action='ignore')
处理效果验证
两种方案处理后你的示例数据结果如下:
| Name | Address |
|---|---|
| Anuj | Anuj,Sinha-BB |
| Sinha | Sinha,Anuj BB |
内容的提问来源于stack exchange,提问作者Anuj Sinha
相关产品推荐
相关产品推荐

