我有一个带有多列的geopandas GeoDataFrame。当我尝试为geoDataFrame列设置数据类型时,它将返回一个熊猫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)


任何帮助将是巨大的!

最佳答案

这是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)


或因为'geometry'是默认设置,在这种情况下,您甚至可以将其省略:

gdf_voronoi = gdf_voronoi.astype(...)
gdf_voronoi = geopandas.GeoDataFrame(gdf_voronoi, crs=crs)

关于python - 使用gdf.astype()将geopandas GeoDataFrame转换为pandas DataFrame,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56303619/

10-09 17:17