代码之家  ›  专栏  ›  技术社区  ›  Jos

当在文本字符串中使用关键字时,如何使您查找的关键字返回true?

  •  0
  • Jos  · 技术社区  · 2 年前

    我在kaggle上找到了这个数据集,我想在上面做EDA。

    https://www.kaggle.com/datasets/andrewmvd/data-scientist-jobs/data

    快速概述:数据集是从glassdoordatascience的招聘信息中抓取的。 其中一列是职位名称,有些职位中有“Senior”或与Senior相关的单词。例如“数据科学总监”或“高级数据分析师”。

    如果职位中有Senior、Sr、Director、Lead等关键字,我想写一个返回1的代码。

    这是我迄今为止对代码的尝试

    def seniority_level_(text):
        seniority_list = ["sr","senior","lead","director", "sr.","vp"]
        for i in seniority_list:
            if i in text.lower():
                return 1
            else:
                return 0
    df_data["Senior level"] = df_data["Job Title"].apply(seniority_level_)
    
    

    现在,我在“职务”列上使用.apply-inpandas来创建一个新列,该列为1或0,如果为1,则Senior在职务中,如果为0,则它不是高级职位。

    问题是,它似乎只适用于职务中有Sr的“职务”列的第一个条目,但似乎不适用于该列中的任何其他条目。

    这件事我哪里错了?

    2 回复  |  直到 2 年前
        1
  •  0
  •   Yuri R    2 年前

    代码中的问题源于 return 语句。当Python执行 回来 语句,它会立即退出 seniority_level_ 函数,返回基于 seniority_list 只有因此,您的函数只检查第一个关键字(“sr”),而忽略其余关键字。

    def seniority_level_(text):
        seniority_list = ["sr", "senior", "lead", "director", "sr.", "vp"]
        for i in seniority_list:
            if i in text.lower():
                return 1
        return 0  # This will execute if none of the keywords are found
    
    df_data["Senior level"] = df_data["Job Title"].apply(seniority_level_)
    
        2
  •  -1
  •   Learning is a mess    2 年前

    使用正则表达式:

    seniority_list = r"(sr|senior|lead|director|sr.|vp)"
    df_data["Senior level"] = df_data["Job Title"].str.contains(seniority_list, case=False).astype(int)