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
相关产品推荐
相关产品推荐

