我的代码处理以前的数据集,现在停止工作了。我查看了此错误消息的其他答案,但似乎没有一个适用于我的。
我的数据框df中有一列用于Email_Address,我想将域拆分为新列。
我的数据帧是前一个df的子集。
#create new df, for only email addresses I need to review
df = df_raw.loc[df_raw['Review'] == 'Y'].copy()
#I reset the index to fix the problem, but it didnt help
df = df.reset_index(drop=True)
#ensure Email Address is a string
df['Email_Address']= df.Email_Address.apply(str)
#make Email Address lower case
df['email_lowercase'] = df['Email_Address'].str.lower()
#Split out domain into a new column
df['domain'] = df['email_lowercase'].apply(lambda x: x.split('@')[1])
IndexError: list index out of range
答案 0 :(得分:3)
您的数据框中很可能包含无效的电子邮件。 您可以使用
识别这些df[~df.Email_Address.astype(str).str.contains('@')]
您可以使用此方法提取域
def extract_domain(email):
email_domain = email.split('@')
if len(email_domain) > 1:
return email_domain[1]
df['domain'] = df['email_lowercase'].apply(extract_domain)
甚至更短:
df['domain'] = df['email_lowercase'].str.split('@').apply(lambda li: li[1] if len(li) > 1 else None)