2 回答
TA贡献1998条经验 获得超6个赞
拥有一个集合版本retirements_word_list(为了有效地包括测试)然后循环句子中的单词,检查该集合中的包含情况可能更方便,而不是相反:
retirement_words_list = ['match','matching','401k','retirement','retire','rsu','rrsp']
retirement_words_set = set(retirement_words_list)
进而
if any(word in retirement_words_list for word in sentence.lower().split()):
# .... etc ....
您的代码只是检查 in 中的任何单词是否retirement_words_list是句子的子字符串,但实际上您必须寻找整个单词匹配,否则将 and 包含'matching'在'retirement'列表中是没有意义的,因为'match'and'retire'已经包含在内。因此使用split- 以及我们也可以反转逻辑的原因。
注意:您可能需要进行一些进一步的更改,因为您的函数word_checker有一个名为的参数row,但它不使用该参数。可能你想做的事情是这样的:
def word_checker(sentence):
if any(word in retirement_words_list for word in sentence.lower().split()):
return '401k/Retirement'
else:
return 'Other'
和:
df['topic'] = df['comments'].apply(word_checker,axis=1)
其中sentence是该列中每一行的内容comments。
TA贡献1797条经验 获得超6个赞
这个简化版本(没有正则表达式)不起作用吗?
if any(word in sentence.lower() for word in retirement_words_list):
添加回答
举报