【问题标题】:Save 3 different datasets into 3 different sheet under same excel file将 3 个不同的数据集保存到同一个 excel 文件下的 3 个不同的工作表中
【发布时间】:2018-03-13 05:14:30
【问题描述】:

我有 3 个不同的数据集,我想将它们存储在同一个 excel 文件下的 3 个不同的工作表中。我尝试如下。有没有什么简洁的方法可以降低编程的复杂度?

xbook = xlsxwriter.Workbook('abcd.xlsx')
xsheet1 = xbook.add_worksheet('img_reshape')
xsheet2 = xbook.add_worksheet('column_sum')
xsheet3 = xbook.add_worksheet('row_sum')

for col,array in enumerate (dataset):
    for row,value in enumerate (array):
    xsheet1.write(row, col, value)
for col,array in enumerate (column_sum):
    for row,value in enumerate (array):
    xsheet2.write(row, col, value)
for col,array in enumerate (row_sum):
    for row,value in enumerate (array):
    xsheet3.write(row, col, value)
xbook.close()

【问题讨论】:

    标签: python xlsxwriter


    【解决方案1】:

    您可以使用pandas(python 数据分析库)来完成此任务。

    通过pip install pandas安装。

    import pandas as pd
    datasets = [dataset, column_sum, row_sum]
    sheet_names = ['img_reshape', 'column_sum', 'row_sum']
    excel_filename = 'abcd.xlsx'
    with pd.ExcelWriter(excel_filename) as writer:
        for data, sheet in zip(datasets, sheet_names):
            df = pd.DataFrame(data)
            df.to_excel(writer, sheet_name=sheet, header=None)
    

    【讨论】:

      【解决方案2】:

      有一种更简单的方法可以做到这一点。 xlsxwriter 文档中提供了一个示例(链接here)。
      我在下面发布了一个相当简单的示例。我还添加了三个示例数据框,以便任何人都可以复制此示例。还有一些您可能感兴趣的可与 dataframe.to_excel 一起使用的可选参数,这些参数在 Pandas 文档中进行了概述。 (链接here)。

      import pandas as pd
      
      df_1 = pd.DataFrame({'Data_1': [10, 20, 30, ]})
      df_2 = pd.DataFrame({'Data_2': [20, 30, 40]})
      df_3 = pd.DataFrame({'Data_3': [30, 40, 50]})
      
      # Create a Pandas Excel writer using XlsxWriter as the engine.
      writer = pd.ExcelWriter('abcd.xlsx', engine='xlsxwriter')
      
      # Convert the dataframe to an XlsxWriter Excel object.
      df_1.to_excel(writer, sheet_name='img_reshape')
      df_2.to_excel(writer, sheet_name='column_sum')
      df_3.to_excel(writer, sheet_name='row_sum')
      
      
      writer.save()
      

      【讨论】:

        【解决方案3】:

        我也推荐 Pandas,但如果你只想用 XlsxWriter 来做,那么你可以这样做:

        import xlsxwriter
        
        # Some sample data.
        dataset = [[11, 12, 13, 14],
                   [21, 22, 23, 24],
                   [31, 32, 33, 34]]
        
        column_sum = dataset
        row_sum = dataset
        
        xbook = xlsxwriter.Workbook('abcd.xlsx')
        xsheet1 = xbook.add_worksheet('img_reshape')
        xsheet2 = xbook.add_worksheet('column_sum')
        xsheet3 = xbook.add_worksheet('row_sum')
        
        mappings = [(dataset, xsheet1),
                    (column_sum, xsheet2),
                    (row_sum, xsheet3)]
        
        for dataset, worksheet in mappings:
            for row_num, row_data in enumerate(dataset):
                for col_num, cell_data in enumerate(row_data):
                    worksheet.write(row_num, col_num, cell_data)
        
        xbook.close()
        

        或者对于内部循环,您可以这样做:

        # Write the data.
        for dataset, worksheet in mappings:
            for row_num, row_data in enumerate(dataset):
                worksheet.write_row(row_num, 0, row_data)
        

        【讨论】:

        • 有熊猫库比 xlsxwriter 更好吗?如果是的话,我想试试。
        猜你喜欢
        • 2021-12-22
        • 1970-01-01
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 2014-08-25
        • 2014-08-06
        • 1970-01-01
        • 2020-02-12
        相关资源
        最近更新 更多