【发布时间】:2020-04-01 15:16:19
【问题描述】:
我有一个数据帧,其地址数据结构如下:
tbm_a['address']
Rue de blabla 20
Vossenstraat 7
Rue Père Jean 3 boite Z
Rue XSZFEFEF 331
我想将它分成一列与街道和一列与门牌号。
我尝试了这个 for 循环,但失败了:
import re
s = list(zip(tbm_a['address']))
for addr in s:
tbm_a['street'] = re.findall('[^\d]*', addr)[0].strip()
tbm_a['num'] = str(addr[len(street):].strip().split(' '))
然后我尝试了这个,并得到了号码:
tbm_a['address_num'] = tbm_a['address'].str.extract('(?P<number>\d+)', expand=True)
但我无法获得街道名称。有什么建议吗?
【问题讨论】:
-
这可能比看起来更难(也许我错了)但是你将如何处理像
Vossenstraat 7b这样的事情?Rue Père Jean 3 boite Z中的数字不是3 boite Z吗?门牌号码并不总是简单的数字。在3rd Ave appt. 1000-4这样的东西上,简单地按数字分割可能会很棘手 -
恐怕你确实是对的——但我不相信我能解释这一点