import geopandas as gpd
from shapely.geometry import Point, LineString
line1 = LineString([Point(0,0), Point(-1,-1), Point(2,-3), Point(4,5)])
line2 = LineString([Point(-2,8), Point(7,4), Point(0,-1), Point(0,2)])
gdf = gpd.GeoDataFrame(
{'City': ['Buenos Aires','Rio de Janeiro'],
'Country': ['Argentina', 'Brazil'], 'geometry': [line1, line2]})
gdf['first'] = None
gdf['last'] = None
for index, row in gdf.iterrows():
coords = [(coords) for coords in list(row['geometry'].coords)]
first_coord, last_coord = [ coords[i] for i in (0, -1) ]
gdf.at[index,'first'] = Point(first_coord)
gdf.at[index,'last'] = Point(last_coord)
gdf