Чтобы извлечь номер улицы из адреса с помощью регулярных выражений из кадра данных в Python - PullRequest
0 голосов
/ 20 октября 2019
d1 = dataset['End station'].head(20)

for x in d1:
    x = re.compile("[0-9]{5}")

print(d1)

Использование dataset['End_Station'] = dataset['End station'].map(lambda x: re.compile("([0-9]{5})").search(x).group())

показывает - TypeError: expected string or bytes-like object. Я новичок в анализе данных, не могу думать ни о каких других методах

1 Ответ

0 голосов
/ 20 октября 2019

Pandas имеет свои собственные методы, относящиеся к Regex , поэтому «более пандазонным» способом написания кода является использование их вместо собственных re методов. .

Рассмотрим такой пример исходных данных:

                      End station
0    4055 Johnson Street, Chicago
1  203 Mayflower Avenue, Columbus

Чтобы найти улицу № по вышеуказанным адресам, запустите:

df['End station'].str.extract(r'(?P<StreetNo>\d{,5})')

и вы получите:

      StreetNo
0     4055
1      203

Обратите также внимание, что улица № может быть короче , чем 5 цифр, но вы пытаетесь сопоставить последовательность, состоящую всего из 5 цифр.

Еще один странный момент в вашем коде: почему вы компилируете регулярные выражения в цикле, а затем не используете их?

Edit

После более тщательного изучения вашего кода у меня есть парадополнительных замечаний.

Когда вы пишете:

for x in df:
    ...

, цикл фактически повторяется по именам столбцов (не строкам).

Еще одна странностьСуть в вашем коде заключается в том, что переменная x , изначально используемая для хранения имени столбца, используется снова для сохранения скомпилированного регулярного выражения. Это плохой привычка. Переменные должны использоваться для хранения одного четко определенного объекта в каждом из них.

А что касается итерации по строкам, вы можете использовать, например,

for idx, row in df.iterrows():
    ...

Но обратите внимание, что iterrows возвращает пар , состоящих из:

  • индекса текущей строки,
  • самой строки.

Тогда(в цикле) вы, вероятно, будете ссылаться на отдельные столбцы этой строки.

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