如何从同一列中提取电子邮件和电话号码并使其成为两列

2024-06-24 12:55:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集,其中contact列包含如下数据

|    id     |     contact                                    |
|     ---    |     ------------------------------------------     |
|     1      |     951-719-9170ZoeWellish@superrito.com           |
|     2      |     PamelaSHill@cuvox.de+1 (217) 569-3204          |
|     3      |     XiuxiuChang@einrot.com1 408 778 3236           |
|     4      |     AnnikaVaara@rhyta.com312-719-7238              |
|     5      |     XiuxiuChang@einrot.com1 408 778 3236          |
|     6      |     AnenechiChidi@armyspy.com+1 (205) 417-8095     |

我需要在一个单独的列中提取电子邮件和电话号码。我怎么能像贝娄那样做呢

|     id     |     Phone             |     Another header            |
|     --     |     -----------------     |      --------------------------    |
|     1      |     951-719-9170          |     ZoeWellish@superrito.com      |
|     2      |     +1 (217) 569-3204     |     PamelaSHill@cuvox.de          |
|     3      |    1 408 778 3236        |     XiuxiuChang@einrot.com        |
|     4      |     312-719-7238          |     AnnikaVaara@rhyta.com         |
|     5      |     1 408 778 3236        |     XiuxiuChang@einrot.com        |
|     6      |     +1 (205) 417-8095     |     AnenechiChidi@armyspy.com     |



Tags: 数据comidcontactdecom1rhytaarmyspy
1条回答
网友
1楼 · 发布于 2024-06-24 12:55:52

对于您的样本,可以这样做:

df['Phone'] = df['contact'].str.extract(r'([+]?[0-9]+[\s+]?[\(]?[\-]?[0-9]+[\)]?[\s+]?[0-9]+[\s+]?[\-]?[0-9]+)')
df['E-mail'] = df['contact'].str.extract(r'([a-zA-Z][a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]+)')

输出:

0   951-719-9170ZoeWellish@superrito.com            ZoeWellish@superrito.com    951-719-9170
1   PamelaSHill@cuvox.de+1 (217) 569-3204           PamelaSHill@cuvox.de    +1 (217) 569-3204
2   XiuxiuChang@einrot.com1 408 778 3236            XiuxiuChang@einrot.com  1 408 778 3236
3   AnnikaVaara@rhyta.com312-719-7238               AnnikaVaara@rhyta.com   312-719-7238
4   XiuxiuChang@einrot.com1 408 778 3236            XiuxiuChang@einrot.com  1 408 778 3236
5   AnenechiChidi@armyspy.com+1 (205) 417-8095      AnenechiChidi@armyspy.com   +1 (205) 417-8095

我相信你的数据集更大,所以你应该测试它,如果有必要的话添加一些符号。我无法预测数据集中所有可能的电话格式

相关问题 更多 >