Разбить строку по нескольким условиям (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]