Как я могу использовать функцию регулярного выражения для извлечения европейских названий улиц, номеров домов и прилагательных с пандами? - PullRequest
0 голосов
/ 31 мая 2018

У меня есть фрейм данных с 6000 записями, и мне нужно извлечь / разбить столбец с названием улицы на: «Streetname», «Housingnumber» и «Adjectives».К сожалению, проблема еще не решена с помощью функций регулярных выражений, потому что в нотации df ["streetname"] нет структуры:

**Input from df["Streetname"]**

St. edward's Lane 26

Vineyardlane3a

High Street 0-9

ParkRoad near #33

Queens Road ??

s-Georgelane9abc

Kings Road 9b

1st Park Avenue 67 near cyclelane 

** Вывод, который я хотел бы:

df["Street"]                    df["housingnumber"]             df["adjective"]**

St. Edward's lane               26

Vineyardlane                    3                               a

High Street                     0-9

ParkRoad                        33

Queens Road                    

s-Georgelane                    9                               abc

Kings Road                      9                               b 

1st Park Avenue                 67

Я пробовал это:

Filter = r'(?P<S>.*)(?P<H>\s[0-9].*)'

df["Streetname"] = df["Streetname"].str.extract(Filter)

Я теряю много данных, и результат записывается только в один столбец ... Надеюсь, что кто-то может помочь!

1 Ответ

0 голосов
/ 31 мая 2018

Не на 100% идеально (я сомневаюсь, что это будет возможно без базы данных или алгоритмов машинного обучения), но отправная точка:

^                         # start of line/string
(?P<street>\w+?\D+)       # [a-zA-Z0-9_]+? followed by not a number
(?P<nr>\d*[-\d]*)         # a digit, followed by - and other digits, eventually
(?P<adjective>[a-zA-Z]*)  # a-z
.*                        # consume the rest of the string

См. демо на regex101.com.


Возможно, вы захотите удалить #, пробелы или ? с конца street впоследствии.
...