geopandas GeoDataFrame 使用 gdf.astype() 转换为 pandas DataFrame

Wal*_*han 5 python pandas geopandas

我有一个包含多列的 geopandas GeoDataFrame。当我尝试为 geoDataFrame 列设置数据类型时,它返回 pandas DataFrame。有没有办法返回 GeoDataFrame 对象?

我做了一个解决方法,在设置列的数据类型后将 DataFrame 更改回 geoDataFrame。但我只是想知道是否有办法返回 GeoDataFrame。我的代码如下:

gdf_voronoi = gdf_voronoi.astype({'elec_neighbors': object, 'trans_lines': object, 'Cap': float, 'Ratio': float,'Area': float})

geo_list = gdf_voronoi['geometry'].tolist()
gdf_voronoi = gpd.GeoDataFrame(gdf_voronoi, crs=crs, geometry=geo_list)
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒!

jor*_*ris 5

这是 GeoPandas/pandas 中的一个错误,我在这里提出了一个问题: https: //github.com/geopandas/geopandas/issues/1006。因此,在短期内,您将需要保留解决方法以在之后转换回 GeoDataFrame。

请注意,要将结果转换回 GeoDataFrame,您不需要将几何图形转换为列表。指定几何列名称就足够了,例如:

gdf_voronoi = gdf_voronoi.astype(...)
gdf_voronoi = geopandas.GeoDataFrame(gdf_voronoi, geometry='geometry', crs=crs)
Run Code Online (Sandbox Code Playgroud)

或者由于“几何”是默认值,在这种情况下您甚至可以省略它:

gdf_voronoi = gdf_voronoi.astype(...)
gdf_voronoi = geopandas.GeoDataFrame(gdf_voronoi, crs=crs)
Run Code Online (Sandbox Code Playgroud)