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

使用pickle加载含pandas Timestamp的文件时触发TypeError求助

解决Pickle加载含Pandas Timestamp对象时报错的问题

问题重现

用原生pickle保存嵌套字典(内含Pandas Timestamp对象):

pickle.dump(doublesplit_list, open("doublesplit_list.p", "wb"))

加载时触发错误:

doublesplit_list = pickle.load(open('doublesplit_list.p', 'rb'))

报错信息:

TypeError                                 Traceback (most recent call last)
Input In [22], in <cell line: 1>()
----> 1 doublesplit_list = pickle.load(open('doublesplit_list.p', 'rb'))

File D:\Porgrams\Conda\lib\site-packages\pandas\_libs\tslibs\timestamps.pyx:132, in pandas._libs.tslibs.timestamps._unpickle_timestamp()

TypeError: _unpickle_timestamp() takes exactly 3 positional arguments (4 given)

原因

核心问题是Pandas版本不兼容:保存pickle文件时的Pandas版本,与加载时的版本对Timestamp对象的序列化格式定义不同,导致反序列化时参数数量不匹配。

解决方法

方法1:对齐版本并转存兼容格式

  1. 安装保存文件时使用的Pandas版本:
pip install pandas==x.x.x  # 替换x.x.x为保存时的具体版本号
  1. 加载原文件后用Pandas官方方法转存:
import pickle
import pandas as pd

# 加载原pickle文件
doublesplit_list = pickle.load(open('doublesplit_list.p', 'rb'))
# 用Pandas自带方法转存,提升跨版本兼容性
pd.to_pickle(doublesplit_list, 'doublesplit_list_compatible.p')
  1. 切换回当前版本后,用官方方法加载:
doublesplit_list = pd.read_pickle('doublesplit_list_compatible.p')

方法2:自定义反序列化钩子(临时应急)

如果无法回退版本,可通过覆盖Pandas的反序列化函数忽略多余参数:

import pickle
import pandas._libs.tslibs.timestamps
from pandas._libs.tslibs.timestamps import Timestamp

def custom_unpickle_timestamp(year, month, day, *args):
    # 仅保留必要的三个参数,忽略多余参数
    return Timestamp(year=year, month=month, day=day)

# 替换原反序列化函数
pandas._libs.tslibs.timestamps._unpickle_timestamp = custom_unpickle_timestamp

# 加载文件
doublesplit_list = pickle.load(open('doublesplit_list.p', 'rb'))

注意:该方法依赖Pandas内部实现,可能随版本更新失效,仅作临时修复。

方法3:避免未来出现同类问题

  • 优先使用Pandas官方的pd.to_pickle()和pd.read_pickle()处理含Pandas对象的数据,而非原生pickle,官方实现更适配Pandas数据结构的版本变化。
  • 若需长期存储,推荐使用Parquet等跨版本兼容的格式,同时支持复杂嵌套结构;时间序列数据也可导出为CSV(需注意时间格式转换)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:05:33