Python:由数据框和列表组成的 IF 语句

我对 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 compare


count_a = 0

def count(x):

    for x in key_a_list:

        if key_a_list == df_response['statement']:

            count_a = count_a + 1      

    return count_a


df_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'] 如下所示:


                  statement

0                  parent said

1         want make difference

2                    dont know

3                         rich

4               go career want

5                      actuary

6                  social life

7             expected society

df_response 的期望输出是:


                  statement         count_a

0                  parent said       0

1         want make difference       2

2                    dont know       0

3                         rich       1

4               go career want       2

5                      actuary       1

6                  social life       2

7             expected society       0


胡说叔叔
浏览 147回答 2
2回答

弑天下

没有理由在apply()这里定义自己的功能或使用。值得庆幸的是,熊猫系列有一个方便的内置函数:series.str.count()。熟悉 pandasseries.str...方法可以为您节省大量工作!只需在您的列表中使用管道字符 ( |)join使其成为正则表达式模式,然后count它df['statement'].str.count('|'.join(key_a_list))0    01    22    13    14    25    16    27    0df['count_a']=df['statement'].str.count('|'.join(key_a_list))df    statement               count_a0   parent said             01   want make difference    22   dont know               13   rich                    14   go career want          25   actuary                 16   social life             27   expected society        0

jeck猫

我认为您想将 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python