Разбить строку по нескольким условиям (Python)

У меня есть датафрейм с большим количеством адресов. Адреса идут одной строкой и не соответствуют одной маске. Необходимо получить название улицы. Встречается три варианта написания адресов:

Вспольный переулок, дом 19/20, строение 1
город Москва, 104-й километр Московской Кольцевой Автодороги, дом 6
город Москва, город Зеленоград, Георгиевский проспект, дом 5

Я написал такой код. Он вроде бы работает, но очень медленно - на мощном сервере перебирает 20к строк более 15 минут. Подскажите, как можно оптимизировать.

for i in df['address']:
    if ('Зеленоград' in i) or ('Троицк' in i) or ('Щербинка' in i):
        df['street'] = df['address'].str.split(',', expand=True)[2]
    elif 'город Москва' not in i:
        df['street'] = df['address'].str.split(',', expand=True)[0]
    else:
        df['street'] = df['address'].str.split(',', expand=True)[1]

Ответы (0 шт):