3

Reproduced code :

import numpy as np 
import pandas as pd

# Create a Dataframe
df1 = pd.DataFrame(np.random.rand(8).reshape(4,2),columns=['X','Y']);print(df1.shape)
df2 = pd.DataFrame(np.random.rand(6).reshape(3,2),columns=['X','Y']);print(df2.shape)
df3 = pd.DataFrame(np.random.rand(10).reshape(5,2),columns=['X','Y']);print(df3.shape)

These above three data frame which has same columns but different rows , need to written in same excel sheet one below other . Expected Output as shown below. DataFrame in single sheet one below other

Note: No of dataframe may vary

1

1 Answer 1

7

Here is one way to do this:

dfs = [df1, df2, df3]
startrow = 0
with pd.ExcelWriter('output.xlsx') as writer:
    for df in dfs:
        df.to_excel(writer, engine="xlsxwriter", startrow=startrow)
        startrow += (df.shape[0] + 2)

Alternatively, if you want a single header at the top of the sheet:

dfs = [df1, df2, df3]
with pd.ExcelWriter('output.xlsx') as writer:
    dfs[0].to_excel(writer, engine="xlsxwriter", startrow=0)
    startrow = dfs[0].shape[0] + 2
    for df in dfs[1:]:
        df.to_excel(writer, engine="xlsxwriter", startrow=startrow, header=False)
        startrow += (df.shape[0] + 2)
Sign up to request clarification or add additional context in comments.

2 Comments

Is it possible to add a single header at the top of the generated sheet? I'm getting a header between every DataFrame. I have tried to set the option 'header=False', but it remove every header.
@Aragon64 Hi, yes, see my extended my answer. Cheers.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.