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

如何在遍历Pandas DataFrame时打印变量名及数据?

解决方案

直接通过循环中的df变量拿不到它的原变量名——因为变量名只是指向DataFrame对象的引用,对象本身并不存储自己的变量名。下面给你两种实用的实现方式:

方法一:用字典绑定变量名与DataFrame(推荐)

这是最直观、最可靠的方式,手动把变量名字符串和对应的DataFrame关联起来:

# 先把DataFrame和对应的名字存进字典
df_map = {
    'df1': df1,
    'df2': df2,
    'df3': df3,
    'df4': df4,
    'df5': df5,
    'df6': df6,
    'df7': df7
}

# 循环遍历字典的键值对
for df_name, df in df_map.items():
    print(f"=== {df_name} 的列名 ===")
    print(df.keys())

这种方法逻辑清晰,不会出现歧义,后续要新增或修改DataFrame也容易维护。

方法二:通过作用域反向查找变量名

如果不想手动写字典,可以利用globals()(全局作用域)或locals()(局部作用域)反向查找指向该DataFrame的变量名,但这种方法有局限性:

# 定义要遍历的DataFrame列表
target_dfs = [df1, df2, df3, df4, df5, df6, df7]

for df in target_dfs:
    # 从全局作用域中找到第一个匹配的变量名
    df_name = next(k for k, v in globals().items() if v is df)
    print(f"=== {df_name} 的列名 ===")
    print(df.keys())

⚠️ 注意事项:

  • 如果DataFrame是在函数内部定义的,要把globals()换成locals()
  • 如果有多个变量指向同一个DataFrame对象,会返回第一个找到的变量名
  • 作用域内变量数量多的时候,这种方法效率会比字典低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:55:29