如何将多个数据框写入一张Excel工作表?

时间:2018-10-18 08:44:31

标签: python excel pandas dataframe

我知道如何在一个Excel中将多个数据框写入不同的工作表。

但是现在我想水平地在一个excel中编写两个不同的数据框。

例如:

enter image description here

我唯一知道的方法是

pd.concat((df1.reset_index() , df2.reset_index(), axis=1).to_excel('1.xlsx') 

但这不方便。

原因:

  1. concat两个df会弄乱列的顺序,必须手动重新排序。
  2. 必须重置索引(df1是日期时间索引,df2是自定义字符串索引),这会导致显示方式难看。
  3. 很难调整位置,如果我需要一个数据框在左边,两个数据框在右边垂直放置呢?

PS:使用inconvenient只是 pd.concat ,因为需要付出很多努力才能使excel看起来很漂亮。

我还尝试使用pd.ExcelWriter来分配startcol

  1. 工作1:

    file_name = 'xxx.xlsx'
    writer = pd.ExcelWriter(file_name, engine='xlsxwriter', 
                        datetime_format='yyyy-mm-dd',
                        date_format='yyyy-mm-dd')
    df1.to_excel(writer, sheet_name=sheet_name, startrow=0 , startcol=0)
    
  2. 工作2

    file_name = 'xxx.xlsx'
    writer = pd.ExcelWriter(file_name, engine='xlsxwriter', 
                        datetime_format='yyyy-mm-dd',
                        date_format='yyyy-mm-dd')
    df2.to_excel(writer, sheet_name=sheet_name, startrow=0 , startcol=df1.shape[1]+2)
    

但这会覆盖excel ....

我希望有一种简便的方法可以在位置startrow, startcol上写入数据帧而又不会浪费文件?

1 个答案:

答案 0 :(得分:0)

在df1和df2中创建具有值作为行号的列。这样,您将保留两个数据框的顺序。

2)合并第一步中创建的列上的两个数据框。

3)将其推送到excel

df1['key']= df1.reset_index().index

df2['key'] = df2.reset_index().index

pd.merge(df1, df2, how='outer',on='key').to_excel('1.xlsx')