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

如何用for循环批量加载pickle文件?AirBnB数据集加载异常

解决循环加载Pickle文件后变量未定义的问题

你遇到的核心问题是:循环代码并没有创建你期望的rio_reviews这类独立变量,导致调用时触发NameError。

问题原因

循环中你每次将读取的数据集赋值给city变量,这个变量会在每轮循环被覆盖,且从未把数据绑定到data_name对应的目标变量名(比如rio_reviews)上。循环结束后,仅保留最后一次循环的city变量,其余你想要的变量根本没被创建。

解决方案

推荐方案:用字典统一存储数据集

用字典管理所有加载的数据,既避免变量混乱,也方便后续批量操作:

import pandas as pd

path_data = '../Data/'

# 定义所有数据名称
city_data = ['jc_listings','jc_calendar','jc_locale','jc_reviews',
             'nyc_listings','nyc_calendar','nyc_locale','nyc_reviews',
             'rio_listings','rio_calendar','rio_locale','rio_reviews']

# 初始化空字典存储数据
data_dict = {}

# 循环加载数据到字典
for data_name in city_data:
    data_dict[data_name] = pd.read_pickle(path_data + data_name + '.pkl')
    print(f"已加载:{data_name},数据类型:{type(data_dict[data_name])}")

# 调用指定数据示例
data_dict['rio_reviews'].info()

备选方案:动态创建全局变量(不推荐)

如果一定要生成独立的全局变量,可以用globals()函数,但这种方式容易造成命名空间混乱,仅适合简单场景:

import pandas as pd

path_data = '../Data/'

city_data = ['jc_listings','jc_calendar','jc_locale','jc_reviews',
             'nyc_listings','nyc_calendar','nyc_locale','nyc_reviews',
             'rio_listings','rio_calendar','rio_locale','rio_reviews']

for data_name in city_data:
    globals()[data_name] = pd.read_pickle(path_data + data_name + '.pkl')
    print(f"已加载:{data_name},数据类型:{type(globals()[data_name])}")

# 现在可直接调用目标变量
rio_reviews.info()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:55:18