我有一个具有一系列形状点对象的geopandas df。我想从形状上的点对象中提取坐标(lat / lon)以生成纬度和经度列。必须有一个简单的方法来做到这一点,但我无法弄清楚。
我知道你可以像这样提取单个坐标:
lon = df.point_object[0].x
lat = df.point_object[0].y
我可以创建一个为整个df执行此操作的函数,但我认为有一种更有效/更优雅的方式。
如果您有最新版本的geopandas(撰写时为0.3.0),并且if df
是GeoDataFrame,则可以在几何列上使用x
和y
属性:
df['lon'] = df.point_object.x
df['lat'] = df.point_object.y
一般来说,如果你有一列形状对象,你也可以使用apply
来完成你可以在整个列的单独坐标上做的事情:
df['lon'] = df.point_object.apply(lambda p: p.x)
df['lat'] = df.point_object.apply(lambda p: p.y)
无需迭代Dataframe,您可以执行以下操作:
df['lon'] = df['geometry'].x
df['lat'] = df['geometry'].y