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

Python字符串通配符搜索及更新:统一城市列格式需求

嘿,这个城市名称标准化的需求太常见啦!用Python配合pandas就能轻松搞定,我给你两种实用的实现方式,你可以根据自己的场景来选:

方法1:用pandas的replace + 正则匹配(简洁高效)

这种方式最适合批量处理,一行代码就能搞定所有规则。我们利用正则的.*匹配任意前缀或后缀,直接替换成标准城市名:

import pandas as pd

# 模拟你的数据
data = {'City': ['Sydney', 'Sydney-EZ', 'Bangalore', 'Bengalore SEZ', 'Delhi', 'New Delhi']}
df = pd.DataFrame(data)

# 定义替换规则:键是正则匹配模式,值是标准化后的名称
replace_rules = {
    r'.*Sydney.*': 'Sydney',
    r'.*Bangalore.*': 'Bangalore',
    r'.*Delhi.*': 'Delhi'
}

# 执行替换,记得打开regex模式
df['City'] = df['City'].replace(replace_rules, regex=True)

# 查看结果
print(df)

运行后所有包含目标关键词的城市名都会被替换成标准格式,不管是带后缀的Sydney-EZ还是带前缀的New Delhi,都能完美匹配。

方法2:自定义函数 + apply(灵活易扩展)

如果之后需要添加更多城市规则,或者需要更复杂的判断逻辑,这种方式可读性更强,维护起来也更方便:

import pandas as pd

data = {'City': ['Sydney', 'Sydney-EZ', 'Bangalore', 'Bengalore SEZ', 'Delhi', 'New Delhi']}
df = pd.DataFrame(data)

def standardize_city(city_name):
    # 检查是否包含目标关键词,匹配到就返回标准名
    if 'Sydney' in city_name:
        return 'Sydney'
    elif 'Bangalore' in city_name:
        return 'Bangalore'
    elif 'Delhi' in city_name:
        return 'Delhi'
    else:
        # 没有匹配到的情况,可以返回原名称或自定义默认值
        return city_name

# 应用函数到City列
df['City'] = df['City'].apply(standardize_city)

print(df)

小提示

如果你的数据里有大小写不一致的情况(比如sydney或DELHI),可以把判断改成大小写不敏感的形式:

# 比如把判断改成
if 'sydney' in city_name.lower():
    return 'Sydney'

这样不管原字符串是大写、小写还是混合,都能准确匹配啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:54:36