pandas 如何使你寻找的关键字在文本字符串中使用时返回true?

hlswsv35  于 2023-11-15  发布在  其他
关注(0)|答案(2)|浏览(117)

我在kaggle上找到了这个数据集,我想在上面做EDA。
https://www.kaggle.com/datasets/andrewmvd/data-scientist-jobs/data
快速概述:数据集是从glassdoor数据科学招聘广告中抓取的。其中一列是职位名称,有些职位有“高级”或与高级相关的词。例如“数据科学总监”或“高级数据分析师”。
我想写的代码,返回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_)

字符串
现在,我在pandas中使用.apply在Job title列上创建一个新列,该列的值为1或0,如果为1,则职位名称中为Senior,如果为0,则不是高级职位。
这样做的问题是,它似乎只适用于职务名称中有Sr的Job Title列的第一个条目,但似乎不适用于该列中的任何其他条目。
我哪里做错了?

pjngdqdw

pjngdqdw1#

代码中的问题是由于在循环中使用了return语句。当Python执行return语句时,它会立即退出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_)

字符串

ukdjmx9f

ukdjmx9f2#

使用正则表达式:

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)

字符串

相关问题