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

如何将字符串变量赋值为DataFrame名称?循环场景实现问询

解决动态命名DataFrame的问题

首先得明确:你当前的代码里,new_df_name只是先被赋值为字符串,紧接着又被覆盖成join后的DataFrame,而且每次循环都会把之前的结果覆盖掉,完全没实现“用字符串作为DataFrame名称”的需求。下面给你两种可行的方案,优先推荐第一种:

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

动态创建独立变量其实是个不太好的习惯——会污染命名空间,后续很难追踪和管理这些变量。更规范的做法是用字典来存储所有生成的DataFrame,把你想要的名称作为字典的键:

# 初始化一个空字典来存放DataFrame
df_collection = {}
target_list = [1,2,3,4]  # 注意不要用list作为变量名,这是Python内置类型

for index in target_list:
    # 生成你想要的DataFrame名称作为键
    df_key = f"user_{index}"
    # 将join后的DataFrame存入字典
    df_collection[df_key] = origin_df1.join(origin_df2, 'id', 'left')

之后要访问某个DataFrame时,直接通过字典的键获取就行:

# 访问user_1对应的DataFrame
print(df_collection['user_1'].head())

这种方式的好处是所有生成的DataFrame都集中在一个容器里,方便遍历、维护和清理,不会和其他变量产生冲突。

方案二:动态创建全局/局部变量(不推荐)

如果你确实需要把这些DataFrame作为独立的全局变量,可以用globals()函数来实现,但强烈不建议这么做,原因上面已经提到了:

target_list = [1,2,3,4]
for index in target_list:
    df_name = f"user_{index}"
    # 把字符串作为变量名,将DataFrame赋值给它
    globals()[df_name] = origin_df1.join(origin_df2, 'id', 'left')

这样之后你就可以直接用user_1、user_2这些变量名来访问对应的DataFrame了,但这种写法会让代码的可维护性大大降低,除非有特殊需求,否则优先选方案一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:09:06