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

Azure Databricks中PySpark循环读取CSV后无法按名称访问DataFrame

循环创建Spark DataFrame后无法外部访问的解决方案

你的代码问题在于:循环中仅将CSV文件读入临时变量df_spark,并未把创建好的DataFrame绑定到athletes、coaches这类目标变量名上。每次循环都会覆盖df_spark的值,循环结束后只有最后一个DataFrame的内容保留在df_spark中,而athletes等变量从未被定义,因此调用时会报错。

解决方法1:绑定到全局变量

通过Python的globals()字典,直接将DataFrame赋值到对应名称的全局变量:

for df_name in ['athletes', 'coaches','entriesgender','medals','teams']:
    globals()[df_name] = spark.read.csv(f'/mnt/data/raw-data/{df_name}.csv', header=True)
    globals()[df_name].show()

# 现在可以直接访问目标DataFrame
athletes.show(n=5)

解决方法2:用字典存储(更推荐)

如果不想污染全局命名空间,建议将所有DataFrame存入字典,通过键名访问:

df_collection = {}
for df_name in ['athletes', 'coaches','entriesgender','medals','teams']:
    df_collection[df_name] = spark.read.csv(f'/mnt/data/raw-data/{df_name}.csv', header=True)
    df_collection[df_name].show()

# 通过字典键访问指定DataFrame
df_collection['athletes'].show(n=5)

原代码失效原因说明

原循环中的df_spark只是遍历字符串列表的临时变量,随后被重新赋值为Spark DataFrame——这个操作和字符串对应的变量名(如athletes)没有任何关联,相当于只是借用了字符串的文本作为临时变量名,并未真正创建名为athletes的变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:44:55