Создание нескольких таблиц Excel с использованием данных в pandas фрейме данных

Просто начал использовать pandas и python.

У меня есть рабочий лист, который я прочитал в dataframe и применяемый метод прямой заливки (ffill).

Тогда я хотел бы создать один документ excel с двумя рабочими таблицами.

Один рабочий лист будет иметь данные в фрейме данных до применения метода ffill, а следующий будет иметь фрейм данных, который применял метод ffill.

В конце концов я намереваюсь создать один рабочий лист для каждого уникального экземпляра данных в определенном столбце фрейма данных.

Я бы хотел применить некоторое форматирование vba к результатам - но я не уверен, какую dll или аддон или что-то, что мне нужно будет вызвать excel vba, используя python, чтобы форматировать заголовки как жирные и добавить цвет и т.д.

У меня был частичный успех в том, что xlsxwriter создаст новую книгу и добавит листы, но операции dataframe.to_excel, похоже, не работают на создаваемых ею книгах, рабочие книги открываются, но листы пусты.

Спасибо заранее.

import os
import time
import pandas as pd
import xlwt
from xlwt.Workbook import *
from pandas import ExcelWriter
import xlsxwriter

#set folder to import files from
path = r'path to some file'
#folder = os.listdir(path)

#for loop goes here

#get date
date = time.strftime('%Y-%m-%d',time.gmtime(os.path.getmtime(path)))

#import excel document
original = pd.DataFrame()
data = pd.DataFrame()

original = pd.read_excel(path,sheetname='Leave',skiprows=26)
data = pd.read_excel(path,sheetname='Leave',skiprows=26)

print (data.shape)
data.fillna(method='ffill',inplace=True)

#the code for creating the workbook and worksheets
wb= Workbook()
ws1 = wb.add_sheet('original')
ws2 = wb.add_sheet('result')
original.to_excel(writer,'original')
data.to_excel(writer,'result')
writer.save('final.xls')

Ответ 1

Ваш примерный код почти правильный, за исключением того, что вам нужно создать объект writer, и вам не нужно использовать методы add_sheet(). Должно работать следующее:

# ...
writer = pd.ExcelWriter('final.xlsx')
data.to_excel(writer,'original')

# data.fillna() or similar.

data.to_excel(writer,'result')
writer.save()
# ...

Правильный синтаксис для этого показан в конце документа Pandas DataFrame.to_excel().

См. также Работа с Python Pandas и XlsxWriter.

Ответ 2

import pandas as pd

df1 = pd.DataFrame({'Data': ['a', 'b', 'c', 'd']})

df2 = pd.DataFrame({'Data': [1, 2, 3, 4]})

df3 = pd.DataFrame({'Data': [1.1, 1.2, 1.3, 1.4]})

writer = pd.ExcelWriter('multiple.xlsx', engine='xlsxwriter')

df1.to_excel(writer, sheet_name='Sheeta')

df2.to_excel(writer, sheet_name='Sheetb')

df3.to_excel(writer, sheet_name='Sheetc')

writer.save()