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

Python如何删除字符串最后一个逗号后的内容并替换为and

问题实现方案

最优方案:正则批量替换

不需要循环遍历,直接用pandas向量化的正则替换功能即可满足所有需求,一行代码完成处理,自动适配所有场景:无逗号的内容原样保留,仅替换最后一个逗号为and。

import pandas as pd
data = pd.read_csv("MCA Data.csv")
# 正则匹配最后一个逗号及后续内容,替换为and+原有后续内容
data["Public_Transport_Route_Desc_New"] = data["Public_Transport_Route_Desc"].str.replace(
    pat = r',([^,]*)$',
    repl = r' and \1',
    regex = True
)

正则逻辑说明

  • r',([^,]*)$':匹配字符串末尾最后一个逗号,同时捕获逗号之后所有不含逗号的内容
  • r' and \1':将匹配到的内容替换为and加之前捕获到的逗号后内容,实现最后一个逗号的替换需求

原有rsplit思路修正

如果你想沿用你原本的拆分拼接思路,只需要给rsplit加最大拆分参数n=1,即可拆分出最后一个逗号前后的内容,再拼接即可:

import pandas as pd
data = pd.read_csv("MCA Data.csv")
# 按最后一个逗号拆分,最多拆为两段
split_res = data["Public_Transport_Route_Desc"].str.rsplit(',', n=1, expand=True)
# 有逗号的场景拼接and,无逗号的场景保留原值
data["Public_Transport_Route_Desc_New"] = split_res.apply(
    lambda x: f"{x[0]} and {x[1]}" if pd.notna(x[1]) else x[0],
    axis=1
)

两种方案都完全覆盖你给出的所有示例场景,不需要额外新增临时字段、不需要循环判断,处理效率远高于遍历iterrows的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:39:04