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

如何将工作区中所有Pandas DataFrame写入对应名称的Excel文件?

我来帮你修正这段代码,完美实现「每个DataFrame生成对应名称的Excel文件」的需求~

先拆解下你原代码里的几个问题:

  • DataFrame默认没有name属性,你试图打印df.name会直接报错
  • fmane = df+".xlsx"是把DataFrame对象和字符串拼接,完全不符合语法,必然抛出类型错误
  • eval()存在安全风险,其实有更稳妥的方式获取当前作用域的变量
修正后的完整代码
import pandas as pd

# 安全获取当前全局作用域中所有DataFrame,键是变量名,值是对应DataFrame对象
alldfs = {var_name: var_value 
          for var_name, var_value in globals().items() 
          if isinstance(var_value, pd.core.frame.DataFrame)}

# 遍历每个DataFrame及其变量名
for df_name, df in alldfs.items():
    print(f"正在处理DataFrame: {df_name}")
    # 用变量名直接生成Excel文件名
    excel_file = f"{df_name}.xlsx"
    # 使用with语句自动管理文件资源,无需手动save
    with pd.ExcelWriter(excel_file) as writer:
        df.to_excel(writer, index=False)  # index=False可选,用于去掉默认索引列
    print(f"{excel_file} 已成功保存!")
关键改动说明
  1. 用变量名作为文件名:通过遍历globals().items(),我们直接拿到了DataFrame的变量名(字典的键df_name),完美匹配你「文件名和DataFrame名称一致」的需求
  2. 替换不安全的eval():globals()会返回当前全局作用域的所有变量,比eval()更安全,避免了潜在的代码注入风险
  3. 规范的文件管理:使用with语句创建ExcelWriter,Python会自动处理文件的打开和关闭,无需手动调用writer.save(),减少出错概率
  4. 可选优化:index=False可以避免把DataFrame的索引列写入Excel,如果你需要保留索引,去掉这个参数即可

在Spyder 4 + Python 3.8的环境下,这段代码可以直接运行,生成的每个Excel文件都会和你的DataFrame变量名完全对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:38:12