如何在遍历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
相关产品推荐
相关产品推荐

