我最初的问题是:
我有dataframe,例如:
df = pd.DataFrame({
"EmailAdds": ["pamelasilvera@gmail.com"],
"Subject": ["Report submission", "Meeting update"]
})
我想在"EmailAdds"
列中根据“@”分隔电子邮件ID,并且必须添加具有根电子邮件ID和域名的列。最终的数据帧应该是这样的:
df = pd.DataFrame({
"EmailAdds": ["pamelasilvera@gmail.com"],
"Subject": ["Report submission", "Meeting update"]
})
后来我意识到"EmailAdds"
列可以在一行数据中包含多封电子邮件,数据之间用“;”分隔。实际上,我的数据帧如下所示:
df = pd.DataFrame({
"EmailAdds": ["pamelasilvera@gmail.com; adarandall@gmail.com; larryjacob@orange.com", "indiejesse.d@gmail.com"],
"Subject": ["Report submission", "Meeting update"]
})
我真正想做的是:
我想遍历"EmailAdds"
的每个元素,首先使用“;”分隔电子邮件然后使用@将每个电子邮件地址分隔成子字符串,然后再添加两列,第一列"EmailAdd_roots"
包含该行电子邮件地址的子字符串,例如“pamelasilvera adarandall larryjacob”,第二列"EmailAdd_domains"
包含唯一域名,不包含“.com”,第二列是“gmail orange”
生成的数据帧应与以下内容完全相同:
df = pd.DataFrame({
"EmailAdds": ["pamelasilvera@gmail.com; adarandall@gmail.com; larryjacob@orange.com", "indiejesse.d@gmail.com"],
"Subject": ["Report submission", "Meeting update"],
"EmailAdds_roots": ["pamelasilvera adarandall larryjacob", "indiejesse"],
"EmailAdds_domains":["gmail orange", "gmail"]
})
这里有一个满嘴的:
结果:
另一种更具可读性的版本是:
我们还可以将
str.extract
与命名的正则表达式组一起使用:输出:
我们用
str.split
做join
相关问题 更多 >
编程相关推荐