【发布时间】:2021-05-11 10:18:19
【问题描述】:
我遇到了一个我认为需要解决的问题:
- 将数据框导出到新的 Excel 工作表(在导出时创建)
- 将特定值写入同一工作簿中的现有工作表
- 在循环中执行上述两项操作
我可以让 1 和 3 自己工作,我也可以让 2 和 3 自己工作,但是当我尝试做所有这三件事时,它不起作用。我认为使用 xlsxwriter 引擎的 pandas to_excel 存在一些问题,与 sheet.write(row,column, value) 冲突到同一工作簿。
例如,这本身就可以工作(请注意,我将“writer”的东西导出到新工作表中注释掉了):
import pandas as pd
import xlsxwriter
loopList = ["A","B","C","D","E"]
data = [['tom', 10], ['nick', 15], ['juli', 14]]
counter = 1
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Name', 'Age'])
workbook = xlsxwriter.Workbook('C:\\Test\\Test.xlsx')
totalsSheet = workbook.add_worksheet('Totals')
writer = pd.ExcelWriter('C:\\Test\\Test.xlsx', engine = 'xlsxwriter')
for sheets in loopList:
#df.to_excel(writer, sheet_name = sheets, index=False)
totalsSheet.write(counter, counter, sheets + str(counter))
counter+=1
#writer.save()
#writer.close()
workbook.close()
上面制作了 test.xlsx 工作簿,带有一个 Totals 工作表,在递增的行/列中带有“A1”、“B2”等。
同样,当我注释掉工作簿内容并将联合国将 pandas-export 数据框注释到新工作表时,这也有效:
import pandas as pd
import xlsxwriter
loopList = ["A","B","C","D","E"]
data = [['tom', 10], ['nick', 15], ['juli', 14]]
counter = 1
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Name', 'Age'])
workbook = xlsxwriter.Workbook('C:\\Test\\Test.xlsx')
totalsSheet = workbook.add_worksheet('Totals')
writer = pd.ExcelWriter('C:\\Test\\Test.xlsx', engine = 'xlsxwriter')
for sheets in loopList:
df.to_excel(writer, sheet_name = sheets, index=False)
#totalsSheet.write(counter, counter, sheets + str(counter))
counter+=1
writer.save()
writer.close()
#workbook.close()
以上内容为我提供了一个新的测试工作簿,其中包含 5 个工作表(A、B、C 等),每个工作表都导出相同的数据框。
但是,我似乎不能两者都做;根据我写入 Excel 的行的顺序,它仍然只执行其中一个(我没有收到错误,我只是得到一个不是我想要做的两件事的结果)。
有没有办法在同一个循环中完成这两件事?
我正在使用 python 3.x.x。感谢您的帮助。
【问题讨论】:
标签: python excel pandas dataframe