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
添加回答
举报
