Поменять слово в строке дата фрейма

Есть файл с распарсеными адресами, но могут встречаться такие аддреса: " Москва, Волынская 1-я, 32", нужно получить " Москва, 1-я Волынская , 32" Неправильный адрес может встречаться вначале/середине/конце строки.

df['Address'] = np.where((df['Address'].str.contains('Вольская 1-я') == True), 'Вольская 1-я', '1-я Вольская')
 

пока больше чем код выше не получилось ничего написать


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

Автор решения: MaxU

Пример:

In [370]: df = pd.DataFrame({"Address": [" Москва, Волынская 1-я, 32", "Волынская 1-я, 32", " Москва, Волынская 1-я, 32, 1"]})

In [371]: df
Out[371]: 
                         Address
0      Москва, Волынская 1-я, 32
1              Волынская 1-я, 32
2   Москва, Волынская 1-я, 32, 1

In [372]: res = df["Address"].str.split(", ", expand=True).applymap(lambda x: re.sub(r"(\w+)\s+(\d.*)", r"\2 \1", x) if x else x).apply(lambda row: row.str.cat(sep=", "), axis=1)

In [373]: res
Out[373]: 
0        Москва, 1-я Волынская, 32
1                1-я Волынская, 32
2     Москва, 1-я Волынская, 32, 1
dtype: object
→ Ссылка