如何将多个DataFrame写入Excel文件的不同工作表?
我有两个DataFrame,希望分别写入同一个Excel文件的不同工作表。以下代码可实现该需求:
import pandas as pd df_x = pd.DataFrame({'a':[1, 2, 3]}) df_y = pd.DataFrame({'b':['a', 'b', 'c']}) writer = pd.ExcelWriter('df_comb.xlsx', engine='xlsxwriter') df_x.to_excel(writer, sheet_name='df_x', index=False) df_y.to_excel(writer, sheet_name='df_y', index=False) writer.save() writer.close()但实际场景中我有大量DataFrame,不想为每个都编写to_excel语句。请问能否通过遍历DataFrame列表来实现批量写入,类似如下代码的逻辑:
for i in [df_x, df_y]: i.to_excel(writer, sheet_name = i, index=False)
批量写入多个DataFrame到Excel不同工作表
你提供的遍历逻辑存在问题:无法直接将DataFrame对象作为工作表名称(sheet_name = i会触发类型错误)。要实现批量写入,核心是把每个DataFrame和对应的工作表名称绑定,推荐以下两种实现方式:
基础实现:手动配对DataFrame与工作表名
用嵌套元组的列表存储DataFrame和对应的工作表名称,遍历该列表完成批量写入:
import pandas as pd # 构造多个目标DataFrame df_x = pd.DataFrame({'a':[1, 2, 3]}) df_y = pd.DataFrame({'b':['a', 'b', 'c']}) df_z = pd.DataFrame({'c':[True, False, True]}) # 将DataFrame与工作表名一一配对 df_sheet_pairs = [ (df_x, 'df_x'), (df_y, 'df_y'), (df_z, 'df_z') ] # 初始化Excel写入器 writer = pd.ExcelWriter('df_comb.xlsx', engine='xlsxwriter') # 批量写入循环 for df, sheet_name in df_sheet_pairs: df.to_excel(writer, sheet_name=sheet_name, index=False) # 保存并释放资源 writer.save() writer.close()
进阶优化:自动匹配DataFrame与工作表名
如果你的DataFrame变量名本身就是想要的工作表名(比如统一以df_开头),可以通过globals()自动筛选并配对,无需手动维护列表:
import pandas as pd # 构造多个符合命名规则的DataFrame df_x = pd.DataFrame({'a':[1, 2, 3]}) df_y = pd.DataFrame({'b':['a', 'b', 'c']}) df_z = pd.DataFrame({'c':[True, False, True]}) # 自动筛选所有以"df_"开头的DataFrame变量 df_sheet_pairs = [ (var, name) for name, var in globals().items() if name.startswith('df_') and isinstance(var, pd.DataFrame) ] writer = pd.ExcelWriter('df_comb_auto.xlsx', engine='xlsxwriter') for df, sheet_name in df_sheet_pairs: df.to_excel(writer, sheet_name=sheet_name, index=False) writer.save() writer.close()
内容的提问来源于stack exchange,提问作者DJC
相关产品推荐
相关产品推荐

