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

Geopandas问题:读取含多边形的CSV转换为GeoDataFrame时报错

解决将含WKT字符串的DataFrame转换为GeoDataFrame的TypeError问题

嘿,这个坑我之前踩过!你遇到的TypeError原因很明确:你DataFrame里的geometry列存的是纯字符串格式的WKT(Well-Known Text)文本,而不是GeoPandas能直接识别的几何对象,直接转GeoDataFrame自然会报错。

问题拆解

你当前的代码只是指定了哪一列作为几何列,但没有把字符串格式的WKT解析成实际的几何图形对象——GeoPandas可没法直接读懂这些文本格式的坐标串哦。

两种可行解决方案

方案1:用GeoPandas自带的from_wkt(推荐,GeoPandas 0.10+可用)

这个方法最简洁,直接把WKT字符串列转换成GeoSeries:

import pandas as pd
import geopandas as gpd

# 读取原始CSV文件
df = pd.read_csv('myFile.csv')

# 将WKT字符串列解析为几何对象系列
geometry_series = gpd.GeoSeries.from_wkt(df['geometry'])

# 创建GeoDataFrame,同时指定CRS(新版本推荐用字符串格式)
gdf = gpd.GeoDataFrame(df, geometry=geometry_series, crs='EPSG:4326')

# 验证结果
print(gdf.head())

方案2:用Shapely手动解析(兼容旧版本)

如果你的GeoPandas版本比较旧,用Shapely的wkt.loads函数逐个解析字符串:

import pandas as pd
import geopandas as gpd
from shapely.wkt import loads

df = pd.read_csv('myFile.csv')

# 对每行的geometry字符串进行解析,转换为几何对象
df['geometry'] = df['geometry'].apply(loads)

# 构建GeoDataFrame并指定CRS
gdf = gpd.GeoDataFrame(df, crs='EPSG:4326')

print(gdf.head())

额外提示

注意CRS的写法:新版本GeoPandas已经弃用了{'init': 'epsg:4326'}这种字典格式,直接用字符串'EPSG:4326'更规范,也避免了弃用警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 08:57:50