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

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

Python:由數據框和列表組成的 IF 語句

Python:由數據框和列表組成的 IF 語句

胡說叔叔 2022-10-06 19:58:09
我對 python 很陌生,需要幫助。我有一個從數據框中獲得的關鍵字列表,如下所示: key_a_list = df_key_words['words'].tolist()我有第二個數據框,它由語句組成:df_response['statement'] 我已經更正了拼寫錯誤,對df_response['statement']列中的文本進行了標記和詞干化。我需要檢查;中是否有key_a_list匹配單詞的單詞 df_response['statement']然后我必須設置一個計數器來key_a_list計算df_response['statement'].感謝您的時間和幫助,非常感謝:)這是我擁有的當前代碼,但它給了我一個錯誤: ValueError: Lengths must match to comparecount_a = 0def count(x):    for x in key_a_list:        if key_a_list == df_response['statement']:            count_a = count_a + 1          return count_adf_response['statement'] = df_response['statement'].apply(lambda x: " ".join([count(x) for word in x.split()]))key_a_list 由以下詞組成:['think'、'college'、'education'、'help'、'better'、'prepare'、'career'、'chosen'、'finally'、'enable'、'enter ','工作','市場','領域','喜歡','制作','選擇','社交','方向','相信','附加','年份','改進', '能力','工人','證明','有能力','完成','學位','富有','成功','感覺','重要','展示','聰明','人'、'訂單'、'薪水'、'以后'、'上'、'想要'、'該'、'好'、'生活'、'學習'、'高中”,“精算師”,“尋找”,“高薪”,“獲得”,“聲望”]df_response['statement'] 如下所示:                  statement0                  parent said1         want make difference2                    dont know3                         rich4               go career want5                      actuary6                  social life7             expected societydf_response 的期望輸出是:                  statement         count_a0                  parent said       01         want make difference       22                    dont know       03                         rich       14               go career want       25                      actuary       16                  social life       27             expected society       0
查看完整描述

2 回答

?
弒天下

TA貢獻1818條經驗 獲得超8個贊

沒有理由在apply()這里定義自己的功能或使用。值得慶幸的是,熊貓系列有一個方便的內置函數:series.str.count()。熟悉 pandasseries.str...方法可以為您節省大量工作!只需在您的列表中使用管道字符 ( |)join使其成為正則表達式模式,然后count


df['statement'].str.count('|'.join(key_a_list))


0    0

1    2

2    1

3    1

4    2

5    1

6    2

7    0


df['count_a']=df['statement'].str.count('|'.join(key_a_list))


df


    statement               count_a

0   parent said             0

1   want make difference    2

2   dont know               1

3   rich                    1

4   go career want          2

5   actuary                 1

6   social life             2

7   expected society        0


查看完整回答
反對 回復 2022-10-06
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

我認為您想將 if 語句中的 key_a_list 更改為“x”,因為 x 包含循環正在遍歷的 key_a_list 中的每個單詞。接下來,您可以使用關鍵字“in”來檢查 x 是否在 df_response["statement"] 中,如果是則向上計數。


此外,您可以在函數內部定義 count_a ,這樣它就不是全局變量,以避免每次運行函數 count(x) 而不是添加到現有計數器時重置它。


我認為它應該這樣工作,如果我錯了,請更多有經驗的成員糾正我:


def count(x):

    count_a = 0

    for x in key_a_list:

        if x in df_response['statement']:

            count_a = count_a + 1      

    return count_a


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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