在现有的Excel工作表上保存Pandas系列

时间:2018-06-20 11:52:23

标签: python excel python-3.x pandas

我正在尝试将一些值从python导出到excel。 在第一部分中,我想设置工作表并将其保存在xlsx文件中。 之后,我想通过添加一个熊猫系列来覆盖相同的工作表。

我的问题来自这样一个事实,即在我运行代码时,我获得了一个名为“ Name1”的全新工作表,而不是将系列放在先前名为“ Name”的现有工作表上。

import pandas as pd
from openpyxl import Workbook
from openpyxl import load_workbook

#Page setup
wb = Workbook()
ws0 = wb.active
ws0.title = "Name"
ws0.sheet_properties.tabColor = "1072BA"
ws0['B1'] = "AAA"
wb.save('Example.xlsx')
wb.close()

#Insert pandas series on existing worksheet
path = r".\Example.xlsx"
book = load_workbook('Example.xlsx')
writer = pd.ExcelWriter(path, engine = 'openpyxl')
writer.book = book

r1y = pd.Series([1,3,5,13,6,8])
df1y = pd.DataFrame(r1y)

df1y.to_excel(writer, 'Name', header=False, startcol = 0, startrow = 1)
writer.save()
writer.close()

我在做什么错了?

预先感谢

2 个答案:

答案 0 :(得分:1)

很显然,to_excel创建了一个新的工作表,并且不想写入已经创建的工作表。您已经有一个,名为Name,因此新的是Name1。如果您没有工作表MyOwnName,则将创建一个工作表并将数据写入那里:

df1y.to_excel(writer, 'MyOwnName', header=False, startcol = 0, startrow = 1)

尽管我在文档中找不到任何提及它的内容: https://pandas.pydata.org/pandas- docs/stable/generated/pandas.DataFrame.to_excel.html

答案 1 :(得分:0)

我在另一个网站上找到了这个问题的答案,我在这里报告。 我自己还没有想出这个答案,所以我想感谢谁做了: https://cmsdk.com/python/insert-pandas-dataframe-into-existing-excel-worksheet-with-styling.html

from openpyxl import load_workbook, Workbook
import pandas as pd
df = pd.DataFrame(data=["20-01-2018",4,9,16,25,36])
path = 'filepath.xlsx'
writer = pd.ExcelWriter(path, engine='openpyxl')
writer.book = load_workbook(path)
**writer.sheets = dict((ws.title,ws) for ws in writer.book.worksheets)**
df.to_excel(writer,sheet_name="Sheet1", startrow=2,index=False, header=False)
writer.save()

对我有用的是粗体突出显示的行。希望对你有帮助!