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

如何用Python将DataFrame中的单列地址拆分为多列?

Python 地址列拆分与清洗方案

核心思路

针对给定的地址格式,我们可以通过正则表达式精准匹配各字段特征,一次性提取所有目标列。该地址的结构规律如下:

  • 名称:开头到第一个数字前的字符串
  • 地址:数字开头到逗号前的字符串
  • 行政区:逗号后到下一个数字前的字符串
  • ID:连续8位数字
  • 标签:包含斜杠的字母组合
  • 地点:最后单个字母

代码实现

假设数据集存储在Pandas DataFrame中,列名为raw_address,处理代码如下:

import pandas as pd
import re

# 示例数据
data = {
    'raw_address': ["EAGLE'S EYE SPORTS CLUB 5021 TOWNS ROAD, QUEENS 40560621 TS/A D"]
}
df = pd.DataFrame(data)

# 定义正则匹配模式
pattern = r'^(.+?)\s(\d+.+?),\s(\w+)\s(\d{8})\s([A-Z]+/[A-Z])\s([A-Z])$'

# 提取字段并生成新列
df[['Name', 'Address', 'Borough', 'ID', 'Tag', 'Place']] = df['raw_address'].str.extract(pattern)

# 查看处理结果
print(df)

代码说明

  • pattern的各分组对应目标字段:
    • (.+?):非贪婪匹配名称部分,直到遇到第一个空格加数字
    • (\d+.+?):匹配以数字开头的地址内容,直到逗号
    • (\w+):匹配全字母的行政区名称
    • (\d{8}):精准匹配8位ID数字
    • ([A-Z]+/[A-Z]):匹配带斜杠的标签格式
    • ([A-Z]):匹配最后单个字母的地点标识
  • 使用str.extract()方法可直接将匹配结果映射为DataFrame的新列,无需手动拆分

注意事项

如果实际地址存在格式变体(比如名称含数字、ID位数不同等),需要根据具体场景调整正则表达式的匹配规则,确保覆盖所有情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:15:45