Заменить значения в Series по совпадению с подстроками из списка
Необходимо заменить значения в Series по совпадению с подстроками из списка. Сейчас заменяется вообще все
Series такой
0 покупка жилья
1 приобретение автомобиля
2 покупка жилья
3 дополнительное образование
4 сыграть свадьбу
...
21520 операции с жильем
21521 сделка с автомобилем
21522 недвижимость
21523 на покупку своего автомобиля
21524 на покупку автомобиля
Name: purpose, Length: 21525, dtype: object
Нужно заменить все что подойдет под "str.contains('недвиж', 'жиль')" на единое значение
df['purpose'] = df[df['purpose'].str.contains('недвиж', 'жиль').any(), 'purpose'] = 'YYY'
0 YYY
1 YYY
2 YYY
3 YYY
4 YYY
...
21520 YYY
21521 YYY
21522 YYY
21523 YYY
21524 YYY
Name: purpose, Length: 21525, dtype: object
Пожалуйста объясните как заменить только те слова которые подходят под ключевые слова
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
во-первых, вы зря используете метод any
- он отрабатывает все серию (колонку) сразу, и поэтому всегда возвращает True. во-вторых, нельзя в метод srt.contains
передавать итератор. туда нужно передавать паттерн. Можно, однако, передавать паттерн в виде перечисления:
import pandas as pd
s = pd.Series(['покупка жилья', 'приобретение автомобиля', 'покупка жилья', 'дополнительное образование', 'недвижимость'])
0 покупка жилья
1 приобретение автомобиля
2 покупка жилья
3 дополнительное образование
4 недвижимость
s.str.contains("|".join(['недвиж', 'жиль']))
0 True
1 False
2 True
3 False
4 True