如何使用phonenumbers Python库获取df每行中的所有电话号码?

如何使用phonenumbers Python库获取df每行中的所有电话号码?,python,pandas,python-phonenumber,Python,Pandas,Python Phonenumber,我想使用Python的phonenumber库创建一个列,其中包含数据帧中text列的每一行中可用的所有有效电话号码 complains = ['If you validate your data, your confirmation number is 1-23-456-789, for a teacher you will be debited on the 3rd of each month 41.99, you will pay for the remaining 3 services

我想使用Python的
phonenumber
库创建一个列,其中包含数据帧中
text
列的每一行中可用的所有有效电话号码

complains = ['If you validate your data, your confirmation number is 1-23-456-789, for a teacher you will be debited on the 3rd of each month 41.99, you will pay for the remaining 3 services offered:n/a',
             'EMAIL VERIFYED, 12345 1st STUDENT 400 88888 2nd STUDENT 166.93 Your request has been submitted and your confirmation number is 1-234-567-777 speed is increased to 250MB $80.99 BILLING CYCLE 18',
             'ADJUSTMENT FROM NOVEMBER TO MAY $80.99 Appointment for equipment change 7878940142']

complainsdf = pd.DataFrame(complains, index =['1', '2', '3'], columns =['text'])
我尝试了下面的代码。但是我没有得到我所期望的结果

complainsdf['tel'] = complainsdf.apply(lambda row: 
    phonenumbers.PhoneNumberMatcher(row['text'], "US"), axis=1)
投诉DF['tel'][0]
提供以下输出:
而不是预期的电话号码。

tel
每行可以包含多个电话号码。它们存储为类型为
phonenumbers.PhoneNumberMatcher
的对象

要提取原始电话号码,必须使用循环遍历对象。例如,您可以执行以下操作:

def get_phone_numbers(x):
    # Extract the phone numbers from the text
    nums = phonenumbers.PhoneNumberMatcher(x, "US")
    # Convert the phone number format
    return [phonenumbers.format_number(num.number, phonenumbers.PhoneNumberFormat.E164) for num in nums]

complainsdf['tel'] = complainsdf['text'].apply(get_phone_numbers)
complainsdf


我在中找到了使用
PhoneNumberFormat.E164
转换格式的方法。也许您必须根据您的情况调整它。

谢谢您的回复。它起作用了。但是,如果任何用户提出的答案不需要两个不同的步骤,我将等待。好的,我将这两个步骤组合为一个步骤。我编辑了答案。
                                                 text   tel
1   If you validate your data, your confirmation n...   []
2   EMAIL VERIFYED, 12345 1st STUDENT 400 88888 2n...   []
3   ADJUSTMENT FROM NOVEMBER TO MAY $80.99 Appoint...   [+17878940142]