Записная книжка jupyter с регулярными выражениями

#python #regex #jupyter

#python #регулярное выражение #jupyter

Вопрос:

Мне нужна ваша помощь в создании выражения регулярных выражений в записной книжке Jupyter. У меня есть столбец с адресами США во фрейме данных. И некоторые улицы имеют одну букву в начале:

БУЛЬВАР САНСЕТ, W

S VERMONT AVE

N VINE ST

E 59TH ST

БУЛЬВАР УИЛШИР

БУЛЬВАР БЕВЕРЛИ

Как мне избавиться от этих отдельных букв в начале названия улицы с помощью выражения регулярного выражения? Я создал это, но это не работает:

rest_data[‘street_name’] = rest_data[‘street_name’].replace(‘^[NESW]s’,»,регулярное выражение = True)

Не могли бы вы, пожалуйста, помочь мне исправить это? Или, может быть, заменить его чем-то лучшим? Заранее благодарю вас!

Комментарии:

1. Регулярное выражение работает на regex101.com/r/oxRTUQ/1 . Просто нажмите кнопку генератора кода слева, чтобы увидеть пример правильного кода на Python.

2. да, но по какой-то причине в Jupyter ничего не меняется с названиями улиц, я получаю то же самое «W SUNSET BLVD» при выборе данных из этого столбца после замены, упомянутой выше. Так что что-то должно быть не так, я просто понятия не имею, что

3. Я действительно не знаком с Jupyter. Можете ли вы предоставить ссылку на документы, которые показывают использование .replace() ?

4. Если вы обращаетесь к своим данным из базы данных или файла, изменение там не отразится. Вы также должны сохранить изменения.

5. Я поддерживаю то, что сказал @lkdhruw. Приведенный вами код манипулирует данными в памяти. Возможно, вам потребуется выполнить другую команду, чтобы сохранить данные обратно в источник данных.

Ответ №1:

Я думаю, что ваше регулярное выражение правильно подбирается, но не заменяется. Возможно, вы неправильно разместили параметры в методе replace.

Вот синтаксис с официального сайта:

 DataFrame.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad')
  

Я думаю, что ваш код должен быть заменен следующим :

  rest_data['street_names'] = rest_data['street_names'].replace(to_replace="^s[NEWS]s", value='', regex=True)
  

Это сработало для меня:

Я просто предположил, что после удаления чисел и символов строка может иметь пробел впереди, поэтому небольшая коррекция регулярного выражения сделала свое дело.

Latest_Output

Комментарии:

1. скопировал вашу строку как есть, и она не сработала, я не знаю, что и думать — ibb.co/JpqjK82

2. конечно, здесь вы можете найти некоторые примеры данных в файле csv мой код и комментарии в .html — ufile.io/f/i61yd PS спасибо, я действительно ценю вашу помощь!

3. @Tanya В вашем test_file.csv вызывается столбец, который соответствует требованиям address_no_num . Попробуйте df['address_no_num'].str.replace(r'^[NEWS]s', '')

4. @Tanya смотрите мой ответ, я отредактировал его в соответствии с новым кодом

5. @cr4zyc0der, да, это сработало! Огромное спасибо и хорошего дня, приятель 🙂