p_vall_do
p_vall_do

Reputation: 25

Creating a GeoDataFrame using postcodes

I have a dataframe where each row contains a location specified with a name and a postcode.

Example:

Name1; Postcode1;

Name2; Postcode2;

NameX; PostcodeX;

In order to produce a map where each of these rows show as a point, I need to create a GeoDataFrame using those postcodes (ideally without having to manually look for their latitude/longitude). What's the best way of doing so? Can it be done directly through GeoPandas?

So far, I'm only able to create the GeoDataFrame by using the coordinates of each point, which I have to look up manually on internet:

gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df['Long'], df1['Lat']), crs='EPSG:4326')

Where 'df' is the dataframe with the locations.

Thanks in advance :)

Upvotes: 0

Views: 475

Answers (1)

oh_my_lawdy
oh_my_lawdy

Reputation: 469

you can use pgeocode to lookup coords from postal codes.

import pandas as pd 
import pgeocode

df = pd.DataFrame({'zips': [90210, 60606, 33162]})

# lookup United States zipcodes
nomi = pgeocode.Nominatim('us')

df['lat'] = df['zips'].apply(lambda x: nomi.query_postal_code(x).latitude)
df['long'] = df['zips'].apply(lambda x: nomi.query_postal_code(x).longitude)

df
    zips      lat      long
0  90210  34.0901 -118.4065
1  60606  41.8868  -87.6386
2  33162  25.9286  -80.1830

Upvotes: 0

Related Questions