【问题标题】:geopandas GeoDataFrame gets converted to pandas DataFrame with gdf.astype()geopandas GeoDataFrame 使用 gdf.astype() 转换为 pandas DataFrame
【发布时间】:2019-10-11 16:54:25
【问题描述】:

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

任何帮助都会很棒!

【问题讨论】:

    标签: python pandas geopandas


    【解决方案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)
    

    【讨论】:

    • 我不知道。太感谢了。我将按照建议对我的代码进行更改。
    猜你喜欢
    • 2023-01-19
    • 2017-03-17
    • 2017-03-23
    • 1970-01-01
    • 2015-06-14
    • 2017-04-13
    • 2021-03-29
    • 2017-04-27
    相关资源
    最近更新 更多