Pandas dataframe. Add an aditional row header merging all columns

Viewed 350

I want to add a "second" header to my excel using pandas dataframe. The excel has his values and header. But I want to add a new row above the header with just one column (the size of all columns header). And text centered. Something like this:

enter image description here

How can I do this?

1 Answers

Use MultiIndex.from_product, but text is not centered:

df.columns = pd.MultiIndex.from_product([['Result'], df.columns])

EDIT:

import string

# Creating a DataFrame
df = pd.DataFrame(np.random.randn(8, 6), columns=list('ABCDEF'))


# Create a Pandas Excel writer using XlsxWriter engine.
writer = pd.ExcelWriter("test.xlsx", engine='xlsxwriter')

# Create custom style
df.to_excel(writer, sheet_name='Sheet1', startrow=1, index=False)

# Get workbook and worksheet objects
workbook  = writer.book
worksheet = writer.sheets['Sheet1']

merge_format = workbook.add_format({'align': 'center'})

len_cols = len(df.columns)
#set merge_range by length of colums names
len_cols = len(df.columns)
worksheet.merge_range(0, 0, 0, len_cols - 1, 'Result', merge_format)

writer.save()
Related