Skip to content
Advertisement

Populating Country column from international phone numbers

I have a dataframe with several data including the column phone. I would like to create a column name country, based on the phone numbers. The phone numbers are in the format +country_code_phonenumber, i.e.,for several countries. Example

+351xxxxxxxxx
+1xxxxxxxxxx
+34xxxxxxxxx
+55xxxxxxxxxxx

What is the best way to do this with the library phonenumbers? Or is there another way to do it that I’m missing?

Thank you in advance!

Advertisement

Answer

Not sure if it is the best way, but I was not able to find the way without looping…

import pandas as pd
import phonenumbers
from phonenumbers import geocoder, carrier


df = pd.DataFrame(['+41431234567', '+447399512658'], columns=['Number'])

ph_numbers = df['Number'].values # creating list of numbers

country_list = []  # empty list for countries
for item in ph_numbers:
    numb = phonenumbers.parse(item, 'en') # creating phonenumber object
    print(geocoder.description_for_number(numb, 'en'))
    country_list.append(geocoder.country_name_for_number(numb, 'en')) #passing phonenumber object to geocoder and appending to list

df['Country'] = country_list
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement