为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号