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

如何在Pandas中移除字符串大写字母前内容以清洗地名列?

问题分析与解决方案

你的代码问题出在正则表达式完全不符合需求:当前写的'ABCDEFGHIKLMNOPQRSTVXYZ'是匹配单个大写字母并替换为空,这和你要移除"town of "、"city of "前缀的目标完全无关,所以新列内容和原列一致。

正确的实现方式

方式1:修正原apply函数

把正则改成匹配开头的前缀,同时忽略大小写兼容不同格式:

import re
def my_slicer(row):
    """提取纯地名,移除开头的town of/city of前缀"""
    return re.sub(r'^(town of |city of )', '', row['locality_name'], flags=re.IGNORECASE)
raw_data['locality_name_only'] = raw_data.apply(my_slicer, axis=1)

方式2:更高效的向量化操作(推荐)

不用逐行apply,直接对DataFrame列使用向量化的字符串替换,速度更快:

import re
# 支持匹配开头的town of/city of,忽略大小写
raw_data['locality_name_only'] = raw_data['locality_name'].str.replace(
    r'^(town of |city of )', 
    '', 
    regex=True, 
    flags=re.IGNORECASE
)

扩展说明

如果还有其他类似前缀(比如village of ),直接在正则里添加即可:

raw_data['locality_name_only'] = raw_data['locality_name'].str.replace(
    r'^(town of |city of |village of )', 
    '', 
    regex=True, 
    flags=re.IGNORECASE
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:55:09