【问题标题】:List of multiple dataframes to separate Excel sheets用于分隔 Excel 工作表的多个数据框列表
【发布时间】:2018-11-19 19:36:01
【问题描述】:

我有一个可变长度的数据框列表,我想将每个数据框列表转换为每个 Excel 工作表。

这是我的代码:

for i in range(1, len(dfs)):
    frames = {'sheetName_i' : dfs[i]}
for sheet, df in frames.items():
    dfs[i].to_excel(writer, index=False)
#df is the whole dataframe whereas dfs is the list of df

我的输出中只有最后一个列表。 有什么方法可以将所有列表转换为单独的 Excel 工作表?

我使用了您的建议如下:

for i, df in enumerate(dfs, 1):
   for n in group: #containe the names that I want to name the sheets amd the names equal to the number of sheets.
       df.to_excel(writer, index=False, sheet_name=n.format(i))

工作表名称已更改为我需要的名称。尽管每张表的数据相似,但会丢失一些数据内容,并且将一些数据合并到一张表中,并且在每张表中重复相同的数据。 有什么办法可以得到正确的输出。

很高兴听到一些建议。非常感谢您。

【问题讨论】:

    标签: python excel pandas


    【解决方案1】:

    我认为你需要:

    writer = pd.ExcelWriter('output.xlsx')
    for i, df in enumerate(dfs, 1):
        #python 3.6+
        df.to_excel(writer, index=False,sheet_name=f'sheetName_{i}')
        #below python 3.6   
        #df.to_excel(writer, index=False,sheet_name='sheetName_{}'.format(i))
    writer.save()
    

    示例

    df = pd.DataFrame({
            'A':list('abcdef'),
             'B':[4,5,4,5,5,4],
             'C':[7,8,9,4,2,3],
             'D':[1,3,5,7,1,0],
             'E':[5,3,6,9,2,4],
             'F':list('aaabbb')
    })
    
    #sample list of DataFrames
    dfs = [df[['A','B']], df[['A','B','C']],df[['A','F']]]
    
    writer = pd.ExcelWriter('output.xlsx')
    for i, df in enumerate(dfs, 1):
        #python 3.6+
        df.to_excel(writer, index=False,sheet_name=f'sheetName_{i}')
        #below python 3.6   
        #df.to_excel(writer, index=False,sheet_name='sheetName_{}'.format(i))
    writer.save()
    

    编辑:

    如果需要自定义工作表名称:

    writer = pd.ExcelWriter('output.xlsx')
    names = ['a','d','b']
    for df, n in zip(dfs, names):
        #python 3.6+
        df.to_excel(writer, index=False,sheet_name=f'sheetName_{n}')
        #below python 3.6   
        #df.to_excel(writer, index=False,sheet_name='sheetName_{}'.format(n))
    writer.save()
    

    【讨论】:

    • 工作表名称出现语法错误,请您解释一下工作表名称中的 f 是什么
    • @Vishali - 使用dfs = [x for x in dfs if not x.empty]
    • @Vishali - 示例dfs = [pd.DataFrame(), pd.DataFrame({'a':[21, 10,20]}), pd.DataFrame()] dfs = [x for x in dfs if not x.empty]
    • @jezrael- 非常感谢
    • @jezrael-非常感谢:)
    猜你喜欢
    • 2019-12-04
    • 2016-12-03
    • 1970-01-01
    • 2018-08-31
    • 2020-10-15
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    相关资源
    最近更新 更多