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

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
添加回答
舉報