Pythonista anonymous
Pythonista anonymous

Reputation: 8950

Can I export a dataframe to excel as the very first sheet?

Running dataframe.to_excel() automatically saves the dataframe as the last sheet in the Excel file.

Is there a way to save a dataframe as the very first sheet, so that, when you open the spreadsheet, Excel shows it as the first on the left?

The only workaround I have found is to first export an empty dataframe to the tab with the name I want as first, then export the others, then export the real dataframe I want to the tab with the name I want. Example in the code below. Is there a more elegant way? More generically, is there a way to specifically choose the position of the sheet you are exporting to (first, third, etc)?

Of course this arises because the dataframe I want as first is the result of some calculations based on all the others, so I cannot export it.

import pandas as pd
import numpy as np


writer = pd.ExcelWriter('My excel test.xlsx')

first_df = pd.DataFrame()
first_df['x'] = np.arange(0,100)
first_df['y'] = 2 * first_df['x']

other_df = pd.DataFrame()
other_df['z'] = np.arange(100,201)

pd.DataFrame().to_excel(writer,'this should be the 1st')
other_df.to_excel(writer,'other df')
first_df.to_excel(writer,'this should be the 1st')
writer.save()
writer.close()

Upvotes: 3

Views: 1567

Answers (1)

Dimitris Thomas
Dimitris Thomas

Reputation: 1393

It is possible to re-arrange the sheets after they have been created:

import pandas as pd
import numpy as np

writer = pd.ExcelWriter('My excel test.xlsx')

first_df = pd.DataFrame()
first_df['x'] = np.arange(0,100)
first_df['y'] = 2 * first_df['x']

other_df = pd.DataFrame()
other_df['z'] = np.arange(100,201)

other_df.to_excel(writer,'Sheet2')
first_df.to_excel(writer,'Sheet1')

writer.save()

This will give you this output: enter image description here

Add this before you save the workbook:

workbook = writer.book
workbook.worksheets_objs.sort(key=lambda x: x.name)

enter image description here

Upvotes: 1

Related Questions