Как получить координаты из почтовых индексов и добавить их в DF с помощью цикла - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть следующий фрейм данных:

d = {'Postcode': ['M3A','M4A','M5A','M6A','M9A','M1B'], 'Borough': ['North York', 'Downtown Toronto', 'Etobicoke', 
                                                                    'Scarborough', 'East York', 'York'], 
     'Neighbourhood': ['Parkwoods', 'Victoria Village', 'Harbourfront', 'Regent Park',
       'Lawrence Heights', 'Lawrence Manor']}
post_df = pd.DataFrame(data = d)

, который выдает что-то вроде:

    Postcode    Borough             Neighbourhood
0   M3A         North York          Parkwoods
1   M4A         Downtown Toronto    Victoria Village
2   M5A         Etobicoke           Harbourfront
3   M6A         Scarborough         Regent Park
4   M9A         East York           Lawrence Heights
5   M1B         York                Lawrence Manor

Я хочу получить все широты и долготы для каждого почтового индекса.Я понял этот код, чтобы сделать это:

import geocoder

# initialize your variable to None
lat_lng_coords = None

# loop until you get the coordinates
while(lat_lng_coords is None):
  g = geocoder.google('{}, Toronto, Ontario'.format(postal_code_from_df))
  lat_lng_coords = g.latlng

latitude = lat_lng_coords[0]
longitude = lat_lng_coords[1]

Теперь мой вопрос: используя предыдущий код, я хотел бы получить каждую широту и долготу для каждого почтового кода и добавить их в 2 новых столбца в этомСуществующий DF называется «Широта» и «Долгота».Как я могу сделать это, используя один цикл, чтобы избежать поиска по каждой координате почтового индекса по очереди?

Заранее большое спасибо

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Вы можете использовать df.apply.Что-то вроде:

post_df['Latitude'], post_df['Longitude'] = zip(*post_df['Postcode'].apply(get_geocoder))

Где get_geocoder может быть определено как упомянуто @ Ankur

0 голосов
/ 21 сентября 2018

Привет, вам нужно определить функцию геокодера и зациклить ее на своем df.Я передаю столбец вашего почтового индекса один за другим в функцию и извлекаю значения из геокодера, назначая и сохраняя его в двух новых столбцах широта и долгота.Смотрите ниже:

  import geocoder



def get_geocoder(postal_code_from_df):
     # initialize your variable to None
     lat_lng_coords = None
     # loop until you get the coordinates
     while(lat_lng_coords is None):
       g = geocoder.google('{}, Toronto, Ontario'.format(postal_code_from_df))
       lat_lng_coords = g.latlng
     latitude = lat_lng_coords[0]
     longitude = lat_lng_coords[1]
     return latitude,longitude



for i in range(0,len(post_df)):
    post_df['Latitude'][i],post_df['Longitude'][i]=get_geocoder(post_df.iloc[i]['Postcode'])

Это должно работать для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...