#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)
Это сработало для меня:
Я просто предположил, что после удаления чисел и символов строка может иметь пробел впереди, поэтому небольшая коррекция регулярного выражения сделала свое дело.
Комментарии:
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, да, это сработало! Огромное спасибо и хорошего дня, приятель 🙂