首页 > 解决方案 > 从 DataFrame 列中提取特定字符/文本

问题描述

我正在尝试从数据框的邮件列中获取电子邮件提供商并创建一个名为“Mail_Provider”的新列。例如,从 a@gmail.com 获取 gmail 并将其存储在“Mail_Provider”列中。此外,我想从 Phone 列中提取 Country ISD 并为此创建一个新列。除了正则表达式之外,还有其他直接/更简单的方法吗?

data = pd.DataFrame({"Name":["A","B","C"],"mail": 
["a@gmail.com","b@yahoo.com","c@gmail.com"],"Adress": 
["Adress1","Adress2","Adress3"],"Phone":["+91-1234567890","+88- 
0987654321","+27-2647589201"]})

桌子

Name   mail        Adress       Phone

A    a@gmail.com   Adress1  +91-1234567890
B    b@yahoo.com   Adress2  +88-0987654321
C    c@gmail.com   Adress3  +27-2647589201

预期结果:-

Name   mail        Adress       Phone        Mail_Provider   ISD

A    a@gmail.com   Adress1  +91-1234567890    gmail           91
B    b@yahoo.com   Adress2  +88-0987654321    yahoo           88
C    c@gmail.com   Adress3  +27-2647589201    gmail           27

标签: pythonstringpandasdataframe

解决方案


正则表达式相当简单,如下所示:

data['Mail_Provider'] = data['mail'].str.extract('\@(\w+)\.')

data['ISD'] = data['Phone'].str.extract('\+(\d+)-')

如果您真的想避免使用正则表达式,@Eva 的答案将是您的最佳选择。


推荐阅读