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'])