Я думаю, что мой подход немного сложен. Вы можете попробовать другие методы, если сможете найти. Это мой подход:
Сначала я разбил каждое слово в столбце text
на DF1
и DF2
:
splitDF1, splitDF2 = [],[]
for i,tt1 in enumerate(DF1['text']):
splitDF1.append([i,tt1.split()])
for i,tt2 in enumerate(DF2['text']):
splitDF2.append([i,tt2.split()])
Затем я сравниваю список разделенных текстов в DF1
с списком в DF2
. Если разделенный текст в DF2
является подмножеством разделенного текста в DF2
, сохраните tag
в новом списке, в противном случае оставьте его пустым. Наконец, добавьте новый столбец tag
в DF1
, используя новый список.
DF1tag = []
for sdf1 in splitDF1:
for sdf2 in splitDF2:
if set(sdf2[1]).issubset(sdf1[1]):
tag = DF2.iloc[sdf2[0]][2]
break
else:
tag = ""
DF1tag.append(tag)
DF1['tag'] = DF1tag
Выход:
print(DF1)
id text tag
1 some text with details Good
2 which are not always good Bad
3 irrelevant text
4 I want to get rid of them semiGood
5 more irrelevant cells