У меня есть два кадра данных панд. Один содержит текст, другой набор терминов, которые я хотел бы найти и заменить в тексте. У меня есть способ сделать это, однако я хотел бы добавить условия. Условия, если термин содержит слово «нет» или «нет» до трех слов ранее, не заменяют.
В приведенном ниже примере ID 2 неправильно заменен в соответствии с вышеуказанными условиями.
Пример текста:
d = {'ID': [1, 2, 3], 'Text': ['here is some random text', 'no such random text, none here', 'more random text']}
text_df = pd.DataFrame(data=d)
Пример терминов:
d = {'Replace_item': ['<RANDOM_REPLACED>', '<HERE_REPLACED>', '<SOME_REPLACED>'], 'Text': ['random', 'here', 'some']}
replace_terms_df = pd.DataFrame(data=d)
Метод замены терминов (с неверным идентификатором 2 в зависимости от условий):
text_df['Text'] = [z.replace(x, y) for (x, y, z) in zip(replace_terms_df.Text, replace_terms_df.Replace_item, text_df.Text)]
Целевой кадр данных (с учетом условий):
d = {'ID': [1, 2, 3], 'Text': ['<HERE_REPLACED> is <SOME_REPLACED> <RANDOM_REPLACED> text', 'no such random text, none here', 'more <RANDOM_REPLACED> text']}
target_df = pd.DataFrame(data=d)
Пожалуйста, спросите, нужна ли вам ясность. Спасибо.