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的推荐!