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

Python 2.7中如何用Pickle保存多个对象(两个列表与DataFrame)

使用Pickle保存并加载多个Python变量(列表+DataFrame)

嘿,作为Python新手能写出程序还用到pandas已经很棒啦!一次性保存多个变量其实很容易,咱们直接用字典把它们打包起来,再用Pickle序列化就好,具体步骤如下:

第一步:保存变量到Pickle文件

你可以把需要保存的a、b和df放进一个字典里,这样后续加载时能轻松对应每个变量。记得用with语句来操作文件,它会自动帮你关闭文件,避免资源泄漏:

import pickle
import pandas as pd

# 你的变量(这里按你给出的示例定义)
a = ['red', 'yellow', 'blue']
b = [['A1', 'F2', 'G8'], ['V', 'N'], ['I']]
# 假设df是你已经创建好的DataFrame,这里生成示例模拟你的40列32行数据
df = pd.DataFrame({f'col{i}': range(32) for i in range(40)})

# 打包变量到字典
save_data = {
    'list_a': a,
    'list_b': b,
    'dataframe_df': df
}

# 保存到Pickle文件
with open('my_variables.pkl', 'wb') as f:
    pickle.dump(save_data, f)

简单解释:

  • 'wb'表示以二进制写入模式打开文件,Pickle需要二进制格式来序列化数据
  • 字典的键可以自定义,只要你记得后续加载时对应上就行

第二步:在另一个脚本中加载变量

打开新的Python脚本,用同样的方式读取Pickle文件,然后从字典里取出你需要的变量:

import pickle
import pandas as pd

# 加载Pickle文件
with open('my_variables.pkl', 'rb') as f:
    loaded_data = pickle.load(f)

# 取出各个变量
a_loaded = loaded_data['list_a']
b_loaded = loaded_data['list_b']
df_loaded = loaded_data['dataframe_df']

# 验证加载结果(可选)
print("加载后的列表a:", a_loaded)
print("加载后的列表b:", b_loaded)
print("加载后的DataFrame形状:", df_loaded.shape)  # 会输出(32, 40),和你原数据一致

这里'rb'是二进制读取模式,必须和保存时的模式对应。

实用小贴士

  • Pickle是Python特有的序列化格式,如果你需要和其他语言交互,可能要考虑用JSON(但JSON不支持直接序列化DataFrame,这时候可以用pandas自带的to_json和read_json)
  • 不要加载来自不信任来源的Pickle文件,因为它可能包含恶意代码
  • 如果你的数据量很大,可以在dump时加上protocol=pickle.HIGHEST_PROTOCOL参数,能提升序列化的效率:pickle.dump(save_data, f, protocol=pickle.HIGHEST_PROTOCOL)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:21:14