В базу данных excel довольно легко добавить много данных pandas, если это разные рабочие листы. Но несколько сложнее получить много данных в одном листе, если вы хотите использовать встроенную функциональность df.to_excel pandas.
# Creating Excel Writer Object from Pandas
writer = pd.ExcelWriter('test.xlsx',engine='xlsxwriter')
workbook=writer.book
worksheet=workbook.add_worksheet('Validation')
df.to_excel(writer,sheet_name='Validation',startrow=0 , startcol=0)
another_df.to_excel(writer,sheet_name='Validation',startrow=20, startcol=0)
Приведенный выше код не будет работать. Вы получите сообщение об ошибке
Sheetname 'Validation', with case ignored, is already in use.
Теперь я достаточно экспериментировал, что нашел способ заставить его работать.
writer = pd.ExcelWriter('test.xlsx',engine='xlsxwriter') # Creating Excel Writer Object from Pandas
workbook=writer.book
df.to_excel(writer,sheet_name='Validation',startrow=0 , startcol=0)
another_df.to_excel(writer,sheet_name='Validation',startrow=20, startcol=0)
Это сработает. Итак, моя цель размещения этого вопроса в stackoverflow двояка. Во-первых, я надеюсь, что это поможет кому-то, если он попытается поместить много данных в единый рабочий лист в excel.
Во-вторых, может ли кто-нибудь помочь мне понять разницу между этими двумя блоками кода? Мне кажется, что они почти такие же, за исключением первого блока кода, созданного листом, называемым "Validation" заранее, а второй - нет. Я получаю эту часть.
Я не понимаю, почему это должно быть иначе? Даже если я не создаю рабочий лист заранее, эта строка, строка прямо перед последней,
df.to_excel(writer,sheet_name='Validation',startrow=0 , startcol=0)
все равно создаст лист. Следовательно, к тому времени, когда мы достигли последней строки кода, рабочий лист "Validation" уже создан во втором блоке кода. Итак, мой вопрос в основном, почему второй блок кода работает, а первый - нет?
Пожалуйста, также сообщайте, есть ли другой способ поместить многие dataframes в excel, используя встроенную функциональность df.to_excel!