如何使用Python从表格地址列中拆分提取郊区/地点名称
Python 提取地址中郊区字段解决方案
你可以通过Python实现该需求,提供两种适配方案:
方案1:基于道路类型规则匹配(推荐)
实现逻辑
你的示例地址结构统一为「门牌号+道路名+道路类型标识」后接郊区名称,仅部分地址带逗号分隔,因此通过识别道路类型关键词的位置即可拆分两部分内容,准确率更高、实现更简单。
依赖安装
pip install pandas
完整代码
import pandas as pd # 定义道路类型关键词,不区分大小写 ROAD_TYPES = {'road', 'rd', 'court', 'drive', 'lane', 'dr', 'way', 'street', 'crt', 'st'} def split_address(address): # 去除逗号、首尾空格,分割为单词列表 clean_addr = address.replace(',', ' ').strip() words = clean_addr.split() # 倒序查找第一个道路类型关键词的索引 split_idx = -1 for i in range(len(words)-1, -1, -1): if words[i].lower() in ROAD_TYPES: split_idx = i break # 拆分地址和郊区,郊区首字母大写 if split_idx != -1: addr_part = ' '.join(words[:split_idx+1]) suburb_part = ' '.join([w.capitalize() for w in words[split_idx+1:]]) else: addr_part = address suburb_part = '' return pd.Series([addr_part, suburb_part]) # 读取CSV数据,替换为你的实际文件路径,假设地址列名为Address df = pd.read_csv('你的输入文件路径.csv') df[['Address', 'Suburb']] = df['Address'].apply(split_address) # 输出结果查看 print(df) # 保存为新CSV df.to_csv('提取结果.csv', index=False)
方案2:基于NLTK命名实体识别
实现逻辑
通过NLTK的词性标注、命名实体识别功能,提取地址中的地理实体(GPE类型)作为郊区名称,适配结构更复杂的地址场景。
依赖安装
pip install pandas nltk
完整代码
import pandas as pd import nltk from nltk import word_tokenize, pos_tag, ne_chunk # 首次运行需要下载nltk依赖包 nltk.download('punkt') nltk.download('averaged_perceptron_tagger') nltk.download('maxent_ne_chunker') nltk.download('words') def extract_suburb_nltk(address): clean_addr = address.replace(',', ' ').strip() tokens = word_tokenize(clean_addr) pos_tags = pos_tag(tokens) chunks = ne_chunk(pos_tags) suburb = [] for chunk in chunks: if hasattr(chunk, 'label') and chunk.label() == 'GPE': suburb.append(' '.join(c[0] for c in chunk).capitalize()) # 取最后一个GPE实体作为郊区 return ' '.join(suburb[-1:]) if suburb else '' # 读取和处理数据逻辑同方案1 df = pd.read_csv('你的输入文件路径.csv') df['Suburb'] = df['Address'].apply(extract_suburb_nltk)
以上两种方案对你提供的示例数据测试均可得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者adey27
相关产品推荐
相关产品推荐

