刚开始使用pandas和python。
我有一个工作表,我已将其读入数据框并应用了前向填充(ffill)方法。
然后我想创建一个包含两个工作表的excel文档。
在应用ffill方法之前,一个工作表将拥有数据框中的数据,而下一个工作表将具有应用了ffill方法的数据框。
最终,我打算为数据框的某一列中的每个唯一数据实例创建一个工作表。
然后我想对结果应用一些vba格式 - 但我不确定哪个dll或插件或者我需要使用python调用excel vba来将标题格式化为粗体并添加颜色等。
我已经取得了部分成功,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')
答案 0 :(得分:24)
您的示例代码几乎是正确的,除非您需要创建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()
文档的末尾显示了正确的语法。
答案 1 :(得分:4)
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()