У меня большой набор данных all_transcripts
с разговорами, и у меня есть небольшой список gemeentes
, содержащий названия разных городов.В all_transcripts
я хочу заменить каждый экземпляр, в котором дано название города, на «woonplaats» (нидерландский для города).
Для этого у меня есть следующий код:
all_transcripts['filtered'] = all_transcripts['no_punc'].str.replace('|'.join(gemeentes),' woonplaats ')
Однако это заменяет каждый случай, в котором появляется словосочетание, а не только целые слова.
ЧтоЯ ищу что-то вроде:
all_transcripts['filtered'] = all_transcripts['no_punc'].re.sub('|'r"\b{}\b".format(join(gemeentes)),' woonplaats ')
Но это не работает.
Например, у меня есть:
all_transcripts['no_punc'] = ['i live in amsterdam', 'i come from haarlem', 'groningen is her favourite city']
gemeentes = ['amsterdam', 'rotterdam', 'den haag', 'haarlem', 'groningen']
Вывод, который я хочу получить после запуска кода, выглядит следующим образом:
>>> ['i live in woonplaats', 'i come from woonplaats', 'woonplaats is her favourite city']
До того, как яМы работали с опцией '\ b' регулярных выражений.Однако я не знаю, как применить это здесь.Я мог бы запустить цикл for для каждого слова в gemeentes
и применить его ко всему набору данных.Но учитывая его размер (gemeentes имеет более 300 переменных и all_transcripts более 2,5 миллионов строк), это будет очень затратно для вычислений и, следовательно, я хотел бы использовать такой же подход, как и выше, в котором я заменяю строку, используя оператор OR.