#python #regex #string #dataframe #re
#python #регулярное выражение #строка #dataframe #python-re
Вопрос:
Я работаю с фреймом данных, который содержит адреса, и я хочу удалить определенную часть строки. Например, например
И я хочу удалить строку, поскольку взял слова «ССЫЛКА:» и «ссылка:» в конец предложения. Также я хочу создать новый столбец, который выглядит примерно так (без слова REFERENCE:/reference: и следующей буквы этих слов) Не могли бы вы помочь мне сделать это в регулярном выражении? Я хочу, чтобы новый столбец выглядел примерно так:
Комментарии:
1. Вы должны поместить имеющийся у вас код и выходные данные в текст, чтобы мы могли легко работать с ними.
Ответ №1:
Вы можете использовать некоторые регулярные выражения для получения желаемых результатов.
df = pd.DataFrame({"address": ["Street Pases de la Reforma #200 REFERENCE: Green house", "Street Carranza #300 12 amp; 13 REFERENCE: There is a tree"]})
df.address.str.findall(r". ?(?=REFERENCE)").explode()
0 Street Pases de la Reforma #200
1 Street Carranza #300 12 amp; 13
Объяснение шаблона регулярных выражений:
. ? matches any character (except for line terminators)
? Quantifier — Matches between one and unlimited times, as few times as possible, expanding as needed (lazy)
Positive Lookahead (?=REFERENCE)
Ответ №2:
Регулярное выражение должно выглядеть следующим образом:
import re
discard_re = re.compile('(reference:.*)', re.IGNORECASE | re.MULTILINE)
затем вы можете добавить новый столбец:
df['address_new'] = df.addresses.map(lambda x: discard_re.sub('', x))