在excelxlsxwriter python中迭代多个数据帧并写入excel电子表格

2024-10-03 06:18:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正致力于在一个excel文件中编写excel电子表格中的多个数据帧。 数据帧是使用for循环生成的,因此在每次迭代中我都会得到下一个可用的数据帧,但我不能将每个数据帧都写入电子表格。 我只能在第一个电子表格中写第一个数据帧。 下面是代码片段:

 writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter')
    workbook = writer.book
    web_ClassID=df_stag["Web-Class ID"].unique()
          for data_id, df in df_stag.groupby('Web-Class ID'): 
             for workbook_Id in web_ClassID:
                 if workbook_Id == data_id:
                    for index, col in enumerate(df):
                    df.to_excel(writer,sheet_name=workbook_Id,index=False )
                    writer.save()
    workbook.close()

注: 这里的webclass_id是对象的类型 Df_stag:是一个按Webclass_id分组的数据帧 df是我想写入excel电子表格的数据帧 另外,只要找到一个新的Webclass_id,我就会创建电子表格,这样当找到这个选项卡时,就会用相应的Webclass_id来创建这个选项卡。One file having few tabsanother file having few tabs

输出:我想要一个单独的excel文件,它包含所有文件中的所有选项卡,并从那些在两个文件中具有相同选项卡的文件中附加数据。即11111222233333和11111的数据应该来自这两个文件。在


Tags: 文件数据inwebiddfforexcel
3条回答

我终于找到了问题的答案!!在

我只需将对象赋给sheet_name属性,它会自动将dataframe的每个实例复制到以sheet name为workbook_Id的excel工作表中。数据框到excel(writer,sheet_name=工作簿_Id)

只需将writer.save()移出for循环:

writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter')
workbook = writer.book
web_ClassID=df_stag["Web-Class ID"].unique()

for data_id, df in df_stag.groupby('Web-Class ID'):
    for workbook_Id in web_ClassID:
        if workbook_Id == data_id:
            for index, col in enumerate(df):
                df.to_excel(writer,sheet_name=workbook_Id,index=False )
writer.save()
workbook.close()

对于较短的代码,只需迭代过滤,而不需要工作簿对象:

^{pr2}$

使用XlsxWriter可以将多个数据帧写入单独的工作表或同一工作表中的不同位置。在

请参阅XlsxWriter文档的Handling multiple Pandas Dataframes部分或示例here和{a3}。在

如果它对你的案子不起作用,那么我猜:

  1. workbook_Id不是唯一的,您正在重写同一个工作表。在
  2. workbook_Id == data_id只对一次。在
  3. 您有一些旧版本的Pandas或XlsxWriter。在

我会从1开始。和2。并加入一些调试语句。在

相关问题 更多 >