如何修正Pandas中职位头衔资深级别判断函数的遍历逻辑问题?
职位头衔资深级别标记函数失效原因及修复方案
你遇到的问题出在函数的循环逻辑错误上,原函数只会检查列表里的第一个关键词,一旦不匹配就直接返回0,根本不会验证后续的关键词。
原代码问题分析
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_)
- 当遍历到第一个关键词
"sr"时,如果当前职位头衔里不包含它,函数会立刻执行return 0,终止循环,完全不会去检查"senior"、"lead"等其他关键词。 - 只有当职位头衔恰好包含第一个关键词
"sr"时,才会返回1,其他含资深词汇的条目都会被错误标记为0。
修复方案
方案1:修正循环逻辑
让函数遍历完所有关键词后再返回结果,只要有一个关键词匹配就返回1,全部不匹配才返回0:
def seniority_level_(text): seniority_list = ["sr","senior","lead","director", "sr.","vp"] text_lower = text.lower() for i in seniority_list: if i in text_lower: return 1 # 所有关键词都不匹配才返回0 return 0 df_data["Senior level"] = df_data["Job Title"].apply(seniority_level_)
方案2:用Pandas内置方法更高效实现
不需要自定义函数,直接用str.contains结合正则表达式,代码更简洁高效:
senior_pattern = r'sr|senior|lead|director|sr\.|vp' df_data["Senior level"] = df_data["Job Title"].str.lower().str.contains(senior_pattern).astype(int)
内容的提问来源于stack exchange,提问作者Jos
相关产品推荐
相关产品推荐

