如何将for循环产生的每个 Dataframe 保存到同一个excel工作表中,但不同的工作表?

w51jfk4q  于 2022-12-24  发布在  其他
关注(0)|答案(2)|浏览(241)

我在写python脚本(在jupyter notebook中,使用panda和numpy)其中我有一个for循环,每次迭代都会生成一个矩阵,在这个for循环中,我希望每个矩阵都保存到excel文件中,在for循环进入下一次迭代之前,每个迭代矩阵都应该保存到excel文件中自己的工作表中。我希望第一次迭代的矩阵保存到工作表1中,表2中第2次迭代的矩阵,...表n中第n次迭代的矩阵。
下面是我现在所拥有的,但这只是将每个迭代矩阵重写到同一个Excel工作表中。我是staockoverflow(和python)的新手,所以不确定我的示例脚本格式是否正确,抱歉。

> for r in range (10):
>     Matrix = np.empty((1000,317))
>     for i in range(1000):
>         for j in range (317):
>             if-else statements that fill out Matrix
> 
>     PP = pd.DataFrame(Matrix) 
>     PP.to_excel('File.xlsx', sheet_name='Sheet{}'.format(r+1), header=False, index=False)
oprakyz7

oprakyz71#

为了提高性能,我删除了两个内部for循环,请尝试以下解决方案:

!pip install openpyxl
import pandas as pd
import numpy as np

writer = pd.ExcelWriter('example.xlsx', engine='openpyxl')
for r in range(3):
    Matrix = np.ones((1000,317))
    df = pd.DataFrame(Matrix)
    df.to_excel(writer, sheet_name=f'{r+1}', header=False, index=False)
writer.save()

qjp7pelc

qjp7pelc2#

请参见pandas ExcelWriter docs和其中的以下示例:

df1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])  
df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])  
with pd.ExcelWriter("path_to_file.xlsx") as writer:
    df1.to_excel(writer, sheet_name="Sheet1")  
    df2.to_excel(writer, sheet_name="Sheet2")

相关问题