@madsee

Как реализовать цикл удаление слов из строки в dataframe?

Добрый День.
Пытаюсь написать цикл для удаления определенных слов из строки, возможно это можно реализовать гораздо легче.
У меня есть список населенных пунктов, где есть ошибки вместо буквы "ё" написано 'е' или вместо 'город' написано 'деревня'. Пробую создать столбец только по названию, предварительно удалив все 'лишние' слова. По итогу ничего не меняется.
wordlist = ['поселок','посёлок','городской','городского','типа','деревня']
import re
def locality_id(row):
    name_id = row['locality_name']
    if name_id in wordlist:
        name_id = re.sub('(' + '|'.join(wordlist) + ')','',name_id)
        return name_id
    else:
        return name_id
  • Вопрос задан
  • 1228 просмотров
Решения вопроса 1
@PavelMos
1. Как записан населенный пункт в locality_name ? Если 'деревня Медвежья', то функция её не обработает, потому что if проверяет на совпадение с элементом списка целиком, а не деревню отдельно. Имхо проще не делать проверку дополнительную, а обрабатывать сразу всё подряд
2. Нужно пробел/ы после удалённого слов/а убирать через lstrip или добавить пробел к словам в списке в регекспе,
3. Добавить варианты Деревня, Город, Посёлок

wordlist = ['Посёлок','Поселок','поселок','посёлок','городской','городского','типа','деревня','Деревня']

def locality_id(row):
    name_id = row['locality_name']
    name_id = re.sub('(' + '|'.join(wordlist) + ')','',name_id).lstrip()
    return name_id


for idx, row in df1.iterrows():
     print ('cell=', df1.loc[idx, 'locality_name'])
     df1.loc[idx, 'locality_name']=new_cell
     new_cell=locality_id(row)
     print ('new_cell=',df1.loc[idx, 'locality_name'])
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ternick
@Ternick
А что вы передаёте в Row?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы