使用pandas数据框中的数据创建多个Excel工作表

时间:2014-02-24 07:49:20

标签: python pandas

刚开始使用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')

2 个答案:

答案 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()文档的末尾显示了正确的语法。

另见Working with Python Pandas and XlsxWriter

答案 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()