How to extract domain from email address with Pandas

Viewed 7984

I have no idea to extract domain part from email address with pandas. In case if it is 'kkk@gmail.com' I would like to get 'gmail.com'.

Please give me an idea.

2 Answers

I believe you need split and select second value of lists by indexing:

df = pd.DataFrame({'email':['kkk@gmail.com','aa@yahoo.com']})

df['domain'] = df['email'].str.split('@').str[1]
#faster solution if no NaNs values 
#df['domain'] = [x.split('@')[1] for x in df['email']]
print (df)
           email     domain
0  kkk@gmail.com  gmail.com
1   aa@yahoo.com  yahoo.com

This can also be done using lambda function.

df = pd.DataFrame({'email':['aaa@gmail.com','bbb@yahoo.com', 'ccc@aol.com']})

df['domain'] = df['email'].apply(lambda x: x.split('@')[1])
Related