亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 python 檢查字符串中的任何單詞是否出現在列表中

使用 python 檢查字符串中的任何單詞是否出現在列表中

天涯盡頭無女友 2023-06-27 16:19:39
我有一個 pandas 數據框,其中包含一列數千條評論。我想遍歷列中的每一行,檢查評論是否包含我創建的單詞列表中找到的任何單詞,如果評論包含我的列表中的單詞,我想將其標記為一個單獨的列。到目前為止,這是我的代碼中的內容:retirement_words_list = ['match','matching','401k','retirement','retire','rsu','rrsp']def word_checker(row):    for sentence in df['comments']:         if any(word in re.findall(r'\w+', sentence.lower()) for word in retirement_words_list):            return '401k/Retirement'        else:            return 'Other'df['topic'] = df.apply(word_checker,axis=1)    該代碼將我的數據框中的每一條評論標記為“其他”,即使我已經仔細檢查許多評論包含我的列表中的一個或多個單詞。關于如何糾正我的代碼有什么想法嗎?我非常感謝你的幫助。
查看完整描述

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。


查看完整回答
反對 回復 2023-06-27
?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

這個簡化版本(沒有正則表達式)不起作用嗎?

if any(word in sentence.lower() for word in retirement_words_list):


查看完整回答
反對 回復 2023-06-27
  • 2 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號