我有一个包含多列的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)
任何帮助都会很棒!
答案 0 :(得分:1)
这是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)