有没有办法将多个数据框组合成一个 xlsx 工作表和多个数据框跨单独的工作表

Posted

技术标签:

【中文标题】有没有办法将多个数据框组合成一个 xlsx 工作表和多个数据框跨单独的工作表【英文标题】:Is there a way to combine multiple dataframes into one xlsx sheet and multiple dataframes across separate sheets 【发布时间】:2022-01-22 03:09:44 【问题描述】:

这里我有一个用于跨单独选项卡/工作表的多个数据框的功能

# function
def dfs_tabs(df_list, sheet_list, file_name):
    writer = pd.ExcelWriter(file_name,engine='xlsxwriter')   
    for dataframe, sheet in zip(df_list, sheet_list):
        dataframe.to_excel(writer, sheet_name=sheet, startrow=0 , startcol=0)   
    writer.save()

# list of dataframes and sheet names
dfs = [df, df1, df2]
sheets = ['df','df1','df2']    

# run function
dfs_tabs(dfs, sheets, 'multi-test.xlsx')

将多个数据框合并到一张 xlsx 工作表中

# funtion
def multiple_dfs(df_list, sheets, file_name, spaces):
    writer = pd.ExcelWriter(file_name,engine='xlsxwriter')   
    row = 0
    for dataframe in df_list:
        dataframe.to_excel(writer,sheet_name=sheets,startrow=row , startcol=0)   
        row = row + len(dataframe.index) + spaces + 1
    writer.save()

# list of dataframes
dfs = [df,df1,df2]

# run function
multiple_dfs(dfs, 'Validation', 'test1.xlsx', 1)

我们如何将这两个功能结合起来?

需要一个 Excel 文件 test1.xlsx,其中 df1,df2,df3 在名为 Validation1 的工作表名称中和 df4,df5,df6 在名为 Validation2 的工作表名称中

我的尝试:

# funtion
def multiple_dfs(df_list1, df_list2, sheet_list, file_name, spaces):   
    writer = pd.ExcelWriter(file_name,engine='xlsxwriter')
    row = 0
    for dataframe1, dataframe2, sheet in zip(df_list1, df_list2, sheet_list):
        dataframe1.to_excel(writer,sheet_name=sheet,startrow=row , startcol=0)   
        row = row + len(dataframe1.index) + spaces + 1
        dataframe2.to_excel(writer,sheet_name=sheet,startrow=row , startcol=0)   
        row = row + len(dataframe2.index) + spaces + 1
    writer.save()

# list of dataframes
a_dfs = [df1,df2,df3]
b_dfs = [df4,df5,df6]

sheets = ['sheet1', 'sheet2']
# run function
multiple_dfs(a_dfs, b_dfs, sheets, 'test1.xlsx', 1)

仅创建 sheet1。谁能告诉我错误在哪里?

【问题讨论】:

【参考方案1】:

这对我有用:

def multiple_dfs(df_list, sheets, spaces):   
    row = 1
    for dataframe in df_list:
        dataframe.to_excel(writer,sheet_name=sheets,startrow=row+1 , startcol=0)   
        row = row + len(dataframe.index) + spaces + 2


# list of dataframes
a_dfs = [df1,df2,df3]
b_dfs = [df4,df5,df6]

# run function
writer = pd.ExcelWriter('test1.xlsx',engine='xlsxwriter')
multiple_dfs(a_dfs, "sheet1", 1)
multiple_dfs(b_dfs, "sheet2", 1)
writer.save()

【讨论】:

以上是关于有没有办法将多个数据框组合成一个 xlsx 工作表和多个数据框跨单独的工作表的主要内容,如果未能解决你的问题,请参考以下文章

将数据框添加到没有 xlsx 包的工作表

python将多个excel中的所有工作表附加到pandas数据框中的有效方法

将多个分组查询组合成单个查询

利用kettle,怎样把数据导入到同一个excel,不同sheet中

更改 Excel 工作表选项卡颜色

将多个变体组合成一个变体