【发布时间】:2019-09-07 04:53:16
【问题描述】:
场景
我正在将一个数据框列中的数据解析为多个数据框列。具体来说,我想从一列充满电子邮件的列中解析出所有电话号码。解析出电话号码后,我想从原始电子邮件列中删除这些电话号码。
我的尝试
我从数据框中的一列开始,称为“电子邮件”,其中包含电子邮件。
我能够使用正则表达式成功解析出第一次出现的电话号码,其中包含以下行:
df['phone_num_1'] = df['email'].str.extract('(\(?\d\d\d\)?-? ?\.?\d\d\d-?\.?\d\d\d\d?)')
再次运行此行,但使用新的列名,再次捕获原始电话号码...
我可以使用以下行删除所有个电话号码:
df['email'] = df['email'].replace('(\(?\d\d\d\)?-? ?\.?\d\d\d-?\.?\d\d\d\d?)', '', regex = True)
现在所有的电话号码都不见了,我丢失了第二个电话号码。
我需要什么帮助
如果在我的原始电子邮件列中出现两次电话号码,我如何捕获第二次出现?理想情况下,我希望将第二次出现的电话号码解析到自己的列中。
最后,我会有 3 列:email、phone_num_1、phone_num_2
电子邮件列将不再有任何电话号码。
提前感谢您的帮助!
从数据框添加示例电子邮件
电子邮件列可能包含具有以下字符串的单元格:
安装了新的热泵。系统已启动并运行,没有泄漏。给 新热泵的租户定位。安装了新的 Aqua cal 热泵 电子邮件:example@domain.com |电话:(123) 456-7890 泳池加热器不是 在职的。请致电 234.567.8901 联系居民。供应商付费 水池/水疗加热器设备水池/水疗 10088
注意两个唯一的电话号码
我需要从该字符串中提取每个电话号码并将其放入它们自己的列中。
【问题讨论】:
-
@Emma 我不确定你的意思。您是在询问电子邮件示例吗?
-
向我们展示您的数据框和一些数据
-
我会做以下事情:1)从列中提取所有电子邮件并将它们存储到名为“电话”的单独列中; 2)提取所有电子邮件并将它们存储到名为“电子邮件”的单独列中; 3)提取任何你想要的...... 4)删除原始列
标签: python regex pandas extract