You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含GeoJSON格式列的Pandas DataFrame转为Geopandas DataFrame

将Pandas DataFrame转为Geopandas并设置几何列

要把包含GeoJSON字符串列的Pandas DataFrame转换成Geopandas DataFrame,同时指定几何列,按以下步骤执行:

1. 导入依赖库

需要用到pandas、geopandas、json和shapely的几何转换工具:

import pandas as pd
import geopandas as gpd
import json
from shapely.geometry import shape

2. 解析GeoJSON字符串为几何对象

你的"Geo Shape"列存储的是字符串格式的GeoJSON,先把每个字符串解析为Python字典,再转换为Shapely几何对象:

# 解析字符串并转为Shapely几何
df_uk['geometry'] = df_uk['Geo Shape'].apply(lambda x: shape(json.loads(x)))

3. 转换为Geopandas DataFrame

用geopandas.GeoDataFrame包装原DataFrame,指定geometry列为地理数据框的几何列:

gdf_uk = gpd.GeoDataFrame(df_uk, geometry='geometry')

4. (可选)删除原GeoJSON列

如果不需要保留原始的"Geo Shape"列,可以直接删除:

gdf_uk = gdf_uk.drop('Geo Shape', axis=1)

完整示例代码

结合你提供的示例数据,完整可运行代码如下:

import pandas as pd
import geopandas as gpd
import json
from shapely.geometry import shape

# 构造示例数据
sample_data = {
    'Unnamed: 0': [295, 114, 225],
    'SOVEREIGNT': ['United Kingdom', 'United Kingdom', 'United Kingdom'],
    'NAME': ['Jersey', 'Anguilla', 'Isle of Man'],
    'Geo Shape': [
        '{"coordinates": [[[-5.358386758461411, 36.141109447000375], [-5.360107421875, 36.139892578125]]], "type": "Polygon"}',
        '{"coordinates": [[[-6.773529052734375, 18.2177734375], [-6.771240234375, 18.215484615384617]]], "type": "Polygon"}',
        '{"coordinates": [[[-4.620361328125, 54.23949090909091], [-4.618072509765625, 54.23720208007529]]], "type": "Polygon"}'
    ]
}

df_uk = pd.DataFrame(sample_data)

# 执行转换
df_uk['geometry'] = df_uk['Geo Shape'].apply(lambda x: shape(json.loads(x)))
gdf_uk = gpd.GeoDataFrame(df_uk, geometry='geometry')

# 验证结果
print(gdf_uk[['NAME', 'geometry']])

关键注意点

  • 确保"Geo Shape"列的字符串是合法的GeoJSON格式,如果存在格式错误,json.loads会抛出异常,需要先清理数据。
  • 不管GeoJSON类型是Polygon还是MultiPolygon,shapely.geometry.shape都能自动识别并转换,无需额外处理。

内容的提问来源于stack exchange,提问作者boathon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:22:01