我问了问题here。这是它的修改形式,因此我将其发布为新问题。我有一个L2=['marvel comics','bmw','mercedez benz','audi']
列表。
我有一个列名称为words_col
的pandas数据框,其中包含每个单元格中的元素列表,并希望将列列表与list L2
匹配并将其放在新列match_words
中。
如果它还包含任何单词匹配,例如mercedez
中的mercedez benz
和marvel
中的marvel comics
,则它应返回元素。因此,最终输出将是。
words_col match_words
['marvel','car', 'entertainment','audi'] ['marvel comics','audi']
['audi','usa','benz'] ['audi']
['movies','imdb','chrome','mercedez'] ['mercedez benz']
......
......
我尝试过的事情:
res = []
for i in df['words_col']:
for a in i:
for j in L2:
if a in j:
print (j)
它将所有单词组合在一起。我如何将其添加到pandas列中,因为匹配关键字应对应于words_col
答案 0 :(得分:1)
这应该做到:
df = pd.DataFrame({'words_col': [['marvel','car', 'entertainment','audi'],
['audi','usa'],
['movies','imdb','chrome','mercedez']]})
words = ['marvel comics','bmw','mercedez benz','audi']
df['match_words'] = df['words_col'].apply(lambda terms: [word for word in words if any(term in word for term in terms)])
df
# words_col match_words
#0 [marvel, car, entertainment, audi] [marvel comics, audi]
#1 [audi, usa] [audi]
#2 [movies, imdb, chrome, mercedez] [mercedez benz]
编辑
df['match_words'] = df['words_col'].apply(lambda terms: [word for word in words if any(word.startswith(term) for term in terms)])
这将根据您的最新评论来判断word
是否以word
开头。