Python 如何对Pandas系列中的每个元素运行条件并将其拆分为两行
我有一个包含业务信息的数据集 列包括:“企业名称”和“街道地址” 我试图按街道地址对数据集进行分类,但是,其中一些地址包含套号 例如,街道地址可以是:Python 如何对Pandas系列中的每个元素运行条件并将其拆分为两行,python,pandas,for-loop,Python,Pandas,For Loop,我有一个包含业务信息的数据集 列包括:“企业名称”和“街道地址” 我试图按街道地址对数据集进行分类,但是,其中一些地址包含套号 例如,街道地址可以是: '111 New Montgomery St Suite 101' '222 Second Ave' '111 New Montgomery St' 我正试图把套房号码分成一列。因此,我创建了一个名为“Suite”的新列,并将其默认值填充为None 接下来,我将字符串拆分为一个列表 ['111', 'New', 'Montgomery', 'S
'111 New Montgomery St Suite 101'
'222 Second Ave'
'111 New Montgomery St'
我正试图把套房号码分成一列。因此,我创建了一个名为“Suite”的新列,并将其默认值填充为None
接下来,我将字符串拆分为一个列表
['111', 'New', 'Montgomery', 'St', 'Suite', '101']
然后,我确定街道后缀的索引(St、Ave、Dr等)。在这种情况下,索引将是3
接下来,我想使用后缀的索引作为分隔符,将列表划分为两个列表:
['111'、'New'、'Montgomery'、'St']
和['Suite'、'101']
我无法分配:
['111'、'New'、'Montgomery'、'St']
转到“街道地址”列
及
['Suite','101']
至'Suite'列
注意:街道后缀的位置不同,这不允许我使用替换功能(据我所知)。相反,我目前正在使用iterrows
谢谢大家! 这看起来像是reg ex的工作类型:
df = pd.DataFrame({
'Address': ['111 New Montgomery St Suite 101', '222 Second Ave', '111 New Montgomery St']
})
address = df['Address'].str.extract(r'(.+?)($| Suite \d+)', expand=True)
address.columns = ['StreetAddress', 'Suite']
address['Suite'] = address['Suite'].str.strip()
df.join(address)
结果:
Address StreetAddress Suite
0 111 New Montgomery St Suite 101 111 New Montgomery St Suite 101
1 222 Second Ave 222 Second Ave
2 111 New Montgomery St 111 New Montgomery St
话虽如此,实际地址清理确实很复杂。第一个地址可以写成
Ste。101、111新蒙哥马利街
或#101、111新蒙哥马利街
。有一些web服务可以帮助您做到这一点。您需要将字符串列表合并成单个字符串,然后附加到pd DataFrame中。您对地址清理web服务有什么建议吗?感谢您对reg ex的推荐!