我已经编写了一个代码,通过 for 循环运行以将数据生成到数据框中,但我想将此数据导出到单个工作簿而不是多个工作簿(实际代码在工作计算机上,工作内容是机密的,因此虚拟代码在下面)
下面是代码如何运行的一般概念,没有数据帧如何组成的实际细节。 (虚拟代码在我从 Yahoo Finance 上提取的 csv 文件上运行)
FileName_List = ["AAPL", "GME", "MSFT", "NTDOY", "Z"]
for FileName in FileName_List:
ReadName = FileName + ".csv"
Raw_Data = pd.read_csv(ReadName, sep = ",")
Raw_Data.to_excel("Final_Output.xlsx", sheet_name = FileName)
# removed code that actually manipulates data as it's not needed for example purposes and alludes to confidential data
Final_Data = Raw_Data.copy()
# this line is not actually in my code and I know it's just keep overwriting with every loop
Final_Data.to_excel("Final_Output.xslx", sheet_name = FileName)
所以现在我的目录有一堆Excel。我可以手动将它们全部移动到一个工作簿中,但是考虑到我要运行的实际文件数量,这样做只会浪费时间。
我希望代码的末尾将所有内容运行到同一个工作簿,并且每个工作表都以 for 循环命名
文件按原样放在单独的文件中,所以我无法更改文件的命中方式。同样,上面的示例代码实际上并不是该代码必须运行的真实文件数
我也尝试过使用
ExcelWriter
但在第一个循环之后它错误地要求使用我在这里找到的示例代码请求 zipfile 格式:https://www.statology.org/write-multiple-excel-sheets-pandas /
DataFrame.to_excel()
想要在工作簿中创建多个工作表时说以下内容:
如果你想在工作簿中写多张纸,那就是 必须指定一个 ExcelWriter 对象:
df2 = df1.copy() with pd.ExcelWriter('output.xlsx') as writer: df1.to_excel(writer, sheet_name='Sheet_name_1') df2.to_excel(writer, sheet_name='Sheet_name_2')
所以把上面提到的代码应用到你的代码中,它会像这样:
FileName_List = ["AAPL", "GME", "MSFT", "NTDOY", "Z"]
# Create ExcelWriter object
with pd.ExcelWriter('Final_Output.xlsx') as writer:
for FileName in FileName_List:
ReadName = FileName + ".csv"
Raw_Data = pd.read_csv(ReadName, sep = ",")
# Write to excel sheet with writer object
Raw_Data.to_excel(writer, sheet_name = FileName) # remove the to_excel call you don't need
# PRETEND THAT THERE'S CODE HERE THAT ACTUALLY MANIPULATES THE DATA
Final_Data = Raw_Data.copy()
# Write to excel sheet with writer object
# this line is not actually in my code and I know it's just keep overwriting with every loop
Final_Data.to_excel(writer, sheet_name = FileName) # remove the to_excel call you don't need