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

Python:如何将列表字符串元素作为DataFrame变量名使用?

解决用列表字符串创建对应名称DataFrame的问题

嘿Oz,作为Python初学者遇到这个问题很正常,我来给你捋清楚怎么解决~

你原来的代码之所以没效果,是因为循环里的item只是个临时变量,每次赋值只是修改这个变量的指向,并不会创建以列表元素命名的全局DataFrame变量。下面给你两种可行的方案:

方案1:用字典存储(推荐)

直接创建大量全局变量很容易导致命名混乱,用字典来统一管理这些DataFrame是更规范、易维护的做法,代码示例如下:

import pandas as pd

var1 = ['df_surname_lastname1', 'df_surname_lastname2', ...]
# 创建空字典用于存储所有DataFrame
df_collection = {}

for df_name in var1:
    # 将DataFrame存入字典,键为列表中的名称字符串
    df_collection[df_name] = pd.read_excel('filename.xlsx', sheet_name='sheet2')
    # 查看对应DataFrame的前5行
    print(f"--- {df_name} 的前5行 ---")
    print(df_collection[df_name].head())

后续要访问某个DataFrame时,直接通过字典的键调用即可,比如df_collection['df_surname_lastname1'],这样不管列表多长都能轻松管理。

方案2:创建全局变量(不推荐,但满足需求)

如果你一定要创建与列表元素同名的全局变量,可以借助Python的globals()函数,它能直接操作全局命名空间的字典:

import pandas as pd

var1 = ['df_surname_lastname1', 'df_surname_lastname2', ...]

for df_name in var1:
    # 直接在全局命名空间中创建对应名称的变量
    globals()[df_name] = pd.read_excel('filename.xlsx', sheet_name='sheet2')
    # 现在可以直接用变量名访问了
    print(f"--- {df_name} 的前5行 ---")
    eval(df_name).head()  # 或者直接写 df_surname_lastname1.head()

⚠️ 注意:这种方法不推荐,因为会污染全局命名空间,若列表中的名称与现有变量重名还会覆盖原有数据,后期维护也很难追踪这些变量的来源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:27:33