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

Colab重启后读取含GeoDataFrame的pkl文件报KeyError:0错误

GeoDataFrame Pickle文件读取KeyError:0异常排查

问题复现

重启Colab运行环境后,读取此前可正常加载的GeoDataFrame pickle文件时抛出异常,复现代码:

test = 'derived edges.pkl'  
testdf = pd.read_pickle(test)  

完整报错栈:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-13-eb97f2da93db> in <module>()
      1 test = 'derived edges.pkl'
----> 2 testdf = pd.read_pickle(test)

1 frames
/usr/local/lib/python3.7/dist-packages/pandas/io/pickle.py in read_pickle(filepath_or_buffer, compression, storage_options)
    215                     # RawIOBase, BufferedIOBase, TextIOBase, TextIOWrapper, mmap]";
    216                     # expected "IO[bytes]"
--> 217                     return pickle.load(handles.handle)  # type: ignore[arg-type]
    218             except excs_to_catch:
    219                 # e.g.

/usr/local/lib/python3.7/dist-packages/geopandas/array.py in __setstate__(self, state)
    422     def __setstate__(self, state):
    423         if compat.USE_PYGEOS:
--> 424             geoms = pygeos.from_wkb(state[0])
    425             self._crs = state[1]
    426             self._sindex = None  # pygeos.STRtree could not be pickled yet

KeyError: 0

报错触发于geopandas数组反序列化流程,代码注释标注pygeos.STRtree could not be pickled yet,最终抛出KeyError: 0异常。

根因分析

该问题由GeoPandas序列化/反序列化时的PyGEOS后端配置不匹配导致:

  • 之前写入pickle文件的Colab环境中,GeoPandas未启用PyGEOS后端,序列化生成的状态结构和PyGEOS开启时的结构不一致
  • 重启后的新Colab环境默认开启USE_PYGEOS配置,反序列化时会按照PyGEOS的格式规则,尝试从状态字典中按索引读取WKB几何、CRS信息,找不到对应索引项就抛出KeyError

解决方案

  • 临时读取方案:读取文件前手动关闭PyGEOS后端,和写入时的配置保持一致即可正常加载:
import geopandas
# 先关闭PyGEOS再读文件
geopandas.options.use_pygeos = False
import pandas as pd

test = 'derived edges.pkl'  
testdf = pd.read_pickle(test)
  • 长期适配方案:如果后续需要在开启PyGEOS的环境下使用该文件,可先按上述方法加载文件后,开启PyGEOS配置重新存储pickle,后续读取就不会出现配置不匹配问题
  • 存储建议:跨环境、跨版本传递GeoDataFrame时,尽量避免使用pickle做长期存储,优先选择GeoParquet等通用格式,减少后端、版本差异带来的兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:51:16