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

jk9hmnmh  于 2023-02-20  发布在  其他
关注(0)|答案(4)|浏览(148)

我有一个工作表,我已经读入到一个 Dataframe 和应用的向前填充(ffill)方法。
然后,我想创建一个包含两个工作表的Excel文档。
一个工作表将具有应用填充方法之前的 Dataframe 中的数据,而下一个工作表将具有应用了填充方法的 Dataframe 。
最后,我打算为 Dataframe 的某列中的每个唯一数据示例创建一个工作表。
然后,我想应用一些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')
ttisahbt

ttisahbt1#

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()
lpwwtiir

lpwwtiir2#

除了需要创建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

2w2cym1i

2w2cym1i3#

根据pandas documentation

with pandas.ExcelWriter('final.xlsx') as writer:
    df1.to_excel(writer, sheet_name='original')
    df2.to_excel(writer, sheet_name='result')

更多详情,请点击此处:official docs

rjzwgtxy

rjzwgtxy4#

如果需要,可以使用循环创建更多图纸:

with pd.ExcelWriter(".xlsx", engine = "openpyxl", mode = "w") as writer:
    for i in range(5):
        #do something()
        df.to_excel(writer, sheet_name = "{}".format(i), index = False, engine = "openpyxl")

它将在一个工作簿中生成sheet0、sheet1 ......等(当然,您可以通过修改“sheet_name”来命名任何工作表),这意味着在单个.xlsx文件中。
希望能帮到你。

相关问题