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