Как разобрать пригород из неструктурированной адресной строки - PullRequest
1 голос
/ 21 мая 2019

Python noob здесь.

Я работаю с большим набором данных, который включает столбец с неструктурированными строками.Мне нужно разработать способ создания списка, который включает в себя все названия пригородов в Австралии (я могу легко найти этот источник).Затем мне нужна программа, которая анализирует строку и, когда последовательность соответствует записи в списке, сохраняет подстроку в новый столбец.Набор данных был добавлен из нескольких источников, поэтому у строк нет согласованной структуры.

Например, строки выглядят так:

GIBSON AVE PADSTOW NSW 2211
SYDNEY ROAD COBURG VIC 3058
DUNLOP ST, ROSELANDS
FOREST RD HURSTVILLE NSW 2220
UNKNOWN   
JOSEPHINE CRES CHERRYBROOK NSW 2126

Буду очень признателен, если кто-нибудьесть любой пример кода, который они могут поделиться со мной, или если вы можете указать мне правильное направление для наиболее подходящего инструмента / метода для использования.

В этом примере ожидаемый результат будет выглядеть следующим образом:

'Padstow'

'Кобург'

'Roselands'

'Hurstville'

''

'Cherrybrook'


РЕДАКТИРОВАТЬ:

Будет ли этот код работать?

import pandas as pd
import numpy as np
suburb_list = np.genfromtxt('filepath/nsw.csv', 
                          delimiter=',', dtype=str)
top_row = suburb_list[:].tolist()

dataset = pd.read_csv(‘filepath/dataset.csv')

def get_suburb(dataset.address):
    for s in suburb_list:
        if s in address.lower()
            return s

1 Ответ

0 голосов
/ 22 мая 2019

Так что для довольно простого подхода вы можете просто использовать большой список со всеми названиями пригородов в нижнем регистре, а затем выполнить:

suburbs = [ 'padstow', 'cowburg', .... many more]

def get_suburb(unstructured_string):
    for s in suburbs:
        if s in unstructured_string.lower()
            return s

Это даст вам первое совпадение.Если вы хотите получить фантазию и, возможно, попытаться сделать это правильно перед лицом орфографических ошибок и т. Д., Вы можете попробовать «нечеткие» методы сравнения строк, такие как расстояние Левенштейна (для которого вам придется отделитьстрока в отдельные слова сначала).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...