在Python中的同一个Excel工作表中写入多个数据框,一个在另一个下

Nab*_*ikh 3 automation dataframe python-3.x pandas

复制代码:

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)
Run Code Online (Sandbox Code Playgroud)

上述三个数据框具有相同的列但不同的行,需要在同一张Excel表格中逐一写入。预期输出如下所示。 DataFrame 在单张纸中,一张在一张下面

注意:数据框数量可能会有所不同

Lau*_*ent 7

这是执行此操作的一种方法:

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)
Run Code Online (Sandbox Code Playgroud)

或者,如果您希望工作表顶部有一个标题:

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)
Run Code Online (Sandbox Code Playgroud)