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

在Jupyter中如何通过变量名字符串访问DataFrame对象进行pickle?

批量序列化Jupyter中的pandas DataFrame

直接用%who DataFrame拿到的是变量名字符串,没法直接调用方法,你可以通过全局命名空间字典globals()获取实际的DataFrame对象,并且逐个序列化,避免内存堆积:

核心实现代码

import pandas as pd

# 遍历全局变量,筛选并序列化所有DataFrame
for var_name, obj in globals().items():
    # 过滤掉系统临时变量、pandas自身对象,只保留自定义DataFrame
    if isinstance(obj, pd.DataFrame) and not var_name.startswith('_') and var_name != 'pd':
        # 以变量名作为文件名,逐个写入磁盘
        obj.to_pickle(f"{var_name}.pkl")

额外优化

如果有不需要序列化的DataFrame,可以添加黑名单过滤:

import pandas as pd

exclude_list = ["temp_df", "intermediate_df"]  # 不需要序列化的变量名
for var_name, obj in globals().items():
    if (isinstance(obj, pd.DataFrame) 
        and not var_name.startswith('_') 
        and var_name != 'pd'
        and var_name not in exclude_list):
        obj.to_pickle(f"{var_name}.pkl")

说明

  • globals()返回当前Jupyter会话的全局变量字典,键是变量名字符串,值是对应对象,这样就能直接拿到实际的DataFrame
  • 循环中直接调用to_pickle,每个对象处理完成后立即写入磁盘,不会在内存中保留所有DataFrame的集合,解决大对象内存问题
  • 序列化后的文件可以用pd.read_pickle("变量名.pkl")重新加载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:48:27