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

如何将DataFrame列表转换为包含对应DataFrame对象的元组

问题场景

现有存储DataFrame变量名的字符串列表df_names,需要转换为对应实际DataFrame对象组成的列表df_list,从而通过for循环给每个DataFrame新增一列,列值为df_names中对应的名称字符串。
手动去掉列表元素引号生成df_list时,循环始终将元素识别为字符串类型,无法正常运行如下目标代码:

df_names = ['df1', 'df2', 'df3']

df_list = [df1, df2, df3]

for i, k in zip(df_list, df_names):
    i['new_column'] = k
实现方案

不需要手动硬编码df_list,直接通过Python内置的变量名字典映射取值即可,根据变量作用域选对应方法:

  • 全局作用域场景(脚本顶层、Jupyter单元格直接定义的DataFrame):用globals()获取全局变量表,按字符串名匹配对应DataFrame对象
df_names = ['df1', 'df2', 'df3']
df_list = [globals()[df_name] for df_name in df_names]

# 后续循环可直接正常运行
for df, col_val in zip(df_list, df_names):
    df['new_column'] = col_val
  • 函数内部局部作用域场景:把上述代码里的globals()替换为locals()即可。

避坑提示:不推荐使用eval()类方法实现转换,若df_names中混入恶意构造的字符串会触发代码注入风险,直接读取变量表的方式稳定性和安全性都更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:24:30