geopandas GeoDataFrame通过gdf.astype()转换为pandas DataFrame

时间:2019-05-25 09:38:27

标签: python pandas geopandas

我有一个包含多列的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)

任何帮助都会很棒!

1 个答案:

答案 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)