python - 从 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
解决方案
正则表达式相当简单,如下所示:
data['Mail_Provider'] = data['mail'].str.extract('\@(\w+)\.')
data['ISD'] = data['Phone'].str.extract('\+(\d+)-')
如果您真的想避免使用正则表达式,@Eva 的答案将是您的最佳选择。
推荐阅读
- python - 如何在 Python 中创建可以使用 PIP 安装的 CLI?
- events - 将事件对象从触发函数传递到另一个函数
- python - 美术馆安装Python脚本间歇性锁定,移除热像仪传感器读取功能似乎有效?
- sqlite - sqlite3.OperationalError:靠近“[Total Babies]”:语法错误
- javascript - Angular 的 FormArray 什么时候是传统数组,什么时候是 FormArray 对象?
- c - 我想在 notepad++ 中编译 c 代码,但我无法设置 nppexec
- c# - 基于需要添加到列表的 POCO 添加到现有模型
- python - 允许用户查看他们播放特定曲目的次数的 Django 对象
- error-handling - 使用基于 kafka-stream-binder 的应用程序处理 Spring 云流中的应用程序错误的最佳方法是什么?
- c# - 如何在左侧 Visual Studio 扩展上添加面板