【发布时间】:2021-06-25 13:09:46
【问题描述】:
我有一个数据框,其中有一列 email_adress_raw,每行包含多个电子邮件地址,我想创建一个新列,其中第一个电子邮件地址的特定电子邮件结尾列在一个长列表中。
email_endings = ['email_end1.com','email_end2.com','email_end3.com',...]
我创建了以下函数,它已经在工作,但是由于列表很长并且一直在构建中,我想对代码中的列表或类似的东西进行迭代。我已经想到了一个循环,但不知何故我没有设法做到......
def email_address_new(s):
try:
r = re.search("([\w.-]+@"+email_endings[0]+"|[\w.-]+@"+email_endings[1]+"|[\w.-]+@"+email_endings[2]+")", s).group()
except AttributeError:
print(s)
return None
except TypeError:
print(s)
return None
return r
udf_email_address_new= F.udf(email_address_new, StringType())
df = df.withColumn("email", udf_email_address_new(F.col("email_adress_raw")))
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql user-defined-functions