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

如何从格式不统一的DataFrame列中提取德国城市

从格式混乱的地址列提取德国城市到新列

可以借助德国城市字典来匹配提取,具体步骤如下:

1. 准备德国城市集合

先获取完整的德国城市列表,将其转为集合并按名称长度降序排序——这样能优先匹配较长的城市名,避免短地名(比如街道名里的小地名)误匹配。

2. 编写匹配函数

定义一个函数,遍历地址字符串,找出其中包含的城市名;如果有多个重复匹配(比如示例里的地址出现两次Berlin),取第一个匹配值即可。

3. 代码实现

import pandas as pd

# 加载德国城市列表(假设你已将城市字典保存为每行一个城市的文本文件)
with open('german_cities.txt', 'r', encoding='utf-8') as f:
    german_cities = [city.strip() for city in f.readlines()]

# 按城市名长度降序排序,优先匹配长名称
german_cities_sorted = sorted(german_cities, key=lambda x: len(x), reverse=True)

def extract_city(address):
    # 遍历排序后的城市列表,找到第一个匹配的城市
    for city in german_cities_sorted:
        if city in address:
            return city
    # 无匹配时返回空值
    return None

# 示例DataFrame
data = {
    'Adresse': [
        'Karlstr 10, 10 B, 30,; 04916 Hamburg',
        'München Dorfstr. 28-55, 22555',
        'Marnstraße. Berlin 12, 45666 Berlin',
        'Musterstr, 24855 Dresden',
        'Muster Hausweg 11, Hannover, 56668',
        'Mariestr. 4, 48669 Nürnberg',
        'Hilden Weederstr 33-55, 56889',
        'Pt-gaanen-Str. 2, 45883 Potsdam'
    ]
}
df = pd.DataFrame(data)

# 提取城市到新列
df['Cities'] = df['Adresse'].apply(extract_city)

# 查看结果
print(df[['Cities']])

4. 结果说明

运行后会得到你期望的Cities列:

Cities
0    Hamburg
1    München
2     Berlin
3    Dresden
4   Hannover
5   Nürnberg
6     Hilden
7    Potsdam

如果地址里无匹配城市,函数会返回None,你可以根据需求处理空值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:30:58