【问题标题】:How to Save or export multiple dataframes in excel in different tabs?如何在不同选项卡中保存或导出excel中的多个数据框?
【发布时间】:2020-11-04 20:26:10
【问题描述】:

我需要在 Excel 的不同选项卡中导出或保存 Pandas 多个数据框? 假设我的 df 是:

df1:
Id  Name    Rank
1   Scott   4
2   Jennie  8
3   Murphy  1

df2:
Id  Name    Rank
1   John     14
2   Brown    18
3   Claire   11

df3:
Id  Name    Rank
1   Shenzen   84
2   Dass      58
3   Ghouse    31

df4:
Id  Name    Rank
1   Zen     104
2   Ben     458
3   Susuie  198

这是我的四个数据框,我需要导出为带有 4 个选项卡的 Excel,即 df1、df2、df3、df4。

【问题讨论】:

    标签: python python-3.x pandas python-2.7


    【解决方案1】:

    一个简单的方法是将您的项目保存在一个集合中并使用pd.ExcelWriter

    让我们使用字典。

    #1 使用您的选项卡名称和数据框创建一个字典。

    dfs  = {'df1' : df1, 'df2' : df2...} 
    

    #2 创建一个 excel writer 对象。

    writer = pd.ExcelWriter('excel_file_name.xlsx')
    

    #3 循环遍历您的字典写入并保存您的 excel 文件。

    for name,dataframe in dfs.items():
        dataframe.to_excel(writer,name,index=False)
    
    writer.save()
    

    添加路径。

    from pathlib import Path
    
    trg_path = Path('your_target_path')
    
    writer = pd.ExcelWriter(trg_path.joinpath('excel_file.xlsx'))
    

    【讨论】:

    • 用命令 writer.save() 将我的 excel 保存在哪里,我需要保存在本地系统的物理路径中,所以尝试了这个 writer.save("mypath") 但不工作
    • 将路径添加到字符串或使用os.joinpathlib.Path.joinpath(target_path,excel_filename) 更新我的帖子。
    • 假设如果我们有 100 个 df,我们不能手动执行 dfs = {'df1' : df1, 'df2' : df2...},有没有办法自动化这条线。
    • 这不在问题@Mohekar 的范围内,你是如何生成数据框的?
    • 那么你如何得到 100 个不同的数据框变量? @Mohekar ?
    【解决方案2】:

    使用 xlsxwriter,您可以执行以下操作:

    import xlsxwriter
    import pandas as pd
    
    ### Create df's here ###
    
    writer = pd.ExcelWriter('C:/yourFilePath/example.xslx', engine='xlsxwriter')
    workbook = writer.book
    
    ### First df tab
    worksheet1 = workbook.add_worksheet({}.format('df1') # The value in the parentheses is the tab name, so you can make that dynamic or hard code it
    
    row = 0
    col = 0
    
    for Name, Rank in (df1):
        worksheet.write(row, col, Name)
        worksheet.write(row, col + 1, Rank)
        row += 1
    
    ### Second df tab
    
    worksheet2 = workbook.add_worksheet({}.format('df2')
    
    row = 0
    col = 0
    
    for Name, Rank in (df2):
        worksheet.write(row, col, Name)
        worksheet.write(row, col + 1, Rank)
        row += 1
    
    ### as so on for as many tabs as you want to create
    
    workbook.close()
    
    
    

    xlsxwriter 还允许您进行大量格式化。如果你想这样做check out the docs

    【讨论】:

      猜你喜欢
      • 2017-08-10
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-02
      • 2019-08-29
      • 2017-06-23
      • 2020-11-25
      相关资源
      最近更新 更多