# how do i extract individual returns from maps?

You can use `zip` to unpack the tuple inside the `geolocation` column:

``````def add_geolocation(df, country_column):
df["geolocation"] = country_column.map(geolocate)
df['lat'], df['long'] = zip(*df['geolocation'])
return df
``````

Edit: what does `zip(*df['geolocation'])` do? This is a combination of two different concepts: the star (`*`) operator and the `zip` function.

The `*` operator unpacks the collection into positional arguments. The following two calls are equivalent:

``````def f(a, b):
return a + b

f(1, 2) # return 3

lst = [1,2]
f(*lst) # return 3
``````

The `zip` function returns elements from the input collections pair-wise:

``````zip([1,2], ['A', 'B'], ['One', 'Two']) # return (1, 'A', 'One'), (2, 'B', 'Two')
``````

We combine the two here to split the first elements of the `geolocation` tuples into a separate collection, and the second elements into another collection:

``````geolocation
(1,2)
(3,4)
(5,6)

zip(*df['geolocation']) == zip((1,2), (3,4), (5,6)) == [(1,3,5), (2,4,6)]
# The first is a collection of latitudes, second is longitudes
``````

CLICK HERE to find out more related problems solutions.

Scroll to Top