如何在pandas DataFrame指定列按规则在末尾追加BB字符串?
解决方案
直接使用正则负向后行断言实现末尾匹配判定,核心代码如下:
# 基础版:直接对原始地址处理 df['Address_new'] = df['Address'].str.replace(r'(?<!\d|BB|B\.B|B\.B\.)$', ' BB', regex=True) # 优化版:先去除首尾空白字符,避免末尾空格导致匹配失效 df['Address_new'] = df['Address'].str.strip().str.replace(r'(?<!\d|BB|B\.B|B\.B\.)$', ' BB', regex=True)
规则说明
(?<!...)是正则负向后行断言,仅当前方没有匹配括号内规则的内容时,才会匹配当前位置\d匹配任意数字BB匹配连续的BB字符B\.B匹配B.B(正则中.是通配符,需要加反斜杠转义才能匹配本身)B\.B\.匹配B.B.$匹配字符串的末尾位置
整段逻辑作用是:识别字符串末尾位置,如果该位置前不存在数字/BB/B.B/B.B.,就在此处插入 BB
处理效果
对应测试数据的输出结果如下:
| Name | Address | Address_new |
|---|---|---|
| ramesh | Anuj,Sinha-34 | Anuj,Sinha-34 |
| suresh | Sinha,Anuj B.B | Sinha,Anuj B.B |
| kale | rat,sresh | rat,sresh BB |
| Naresh | rate,hug BB | rate,hug BB |
内容的提问来源于stack exchange,提问作者Anuj Sinha
相关产品推荐
相关产品推荐

