Создание нескольких таблиц 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()