正则表达式Lambda遍历DataFrame异常:所有行均显示首行结果
问题分析与解决
- 结论:所有行都输出了第一行的结果,Lambda是正常遍历每一行的,问题出在
split_it函数内部。 - 错误原因:函数定义时接收的参数是
email,但正则表达式里误用了未定义的变量s——这个s应该是外部作用域中恰好等于DataFrame首行email值的变量,所以不管传入哪一行的email,函数都在处理这个外部的s,导致所有行返回的都是首行的处理结果。 - 修复代码:把函数里的
s改成参数email即可:
def split_it(email): return re.findall(r"[^@]+@[^@]+(?:\.com|\.se|\.br|\.org)", email) df['email_list'] = df['email'].apply(lambda x: split_it(x))
或者更简洁,直接去掉Lambda,把函数直接传给apply:
df['email_list'] = df['email'].apply(split_it)
内容的提问来源于stack exchange,提问作者k_osterlund
相关产品推荐
相关产品推荐

