【问题标题】:creating multiple excel worksheets using data in a pandas dataframe使用 pandas 数据框中的数据创建多个 Excel 工作表
【发布时间】:2014-03-25 18:21:30
【问题描述】:

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

【问题讨论】:

  • 以下示例展示了如何使用 xlsxwriter python 库创建工作簿,插入工作表,然后将数据从 pandas 数据帧(甚至基于数据帧的图表插入 excel)。 pandas-xlsxwriter-charts.readthedocs.org/…

标签: python pandas


【解决方案1】:
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()

【讨论】:

  • 太棒了!它可能是 engine='openpyxl',当它说“ModuleNotFoundError: No module named 'xlsxwriter'”时
  • 谢谢,Kalyan...它的定义如此简单
  • 赞成!拯救了我的一天:)
【解决方案2】:

您的示例代码几乎是正确的,只是您需要创建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

【讨论】:

  • jmcnamara - 请注意,创建多个工作簿时语法不起作用。使用我的链接中的 xlsxwriter 库。
  • 语法应该可以,我测试过了。另外,我编写了您链接到的文档和 XlsxWriter 模块。 :-)
  • jmcnamara - 接受您的回答,感谢您编写 xlsxwriter 模块。我很抱歉。
  • 您能否提供您使用 add_sheet 命令编写的上述函数,以便它执行一些简单的操作,例如添加列表中定义的工作表数量,然后为每个工作表添加相同的数据框那些床单?
猜你喜欢
  • 2020-08-21
  • 2019-07-03
  • 1970-01-01
  • 2019-03-29
  • 2019-08-23
  • 2019-08-25
  • 2016-01-02
  • 2018-02-04
  • 2018-08-31
相关资源
最近更新 更多