【问题标题】:Saving Pandas series on existing excel worksheet在现有的 Excel 工作表上保存 Pandas 系列
【发布时间】:2018-11-29 13:12:22
【问题描述】:

我正在尝试将一些值从 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()

我做错了什么?

提前致谢

【问题讨论】:

  • 自从这个论坛几天以来,第一次有人可以真正复制+粘贴问题中的代码并查看它的工作原理!恭喜! :)

标签: python excel python-3.x pandas


【解决方案1】:

我在另一个网站上找到了这个问题的答案,我在这里报告。 我自己还没有想出这个答案,所以我想归功于谁做了: 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()

对我来说,这项工作是以粗体突出显示的行。希望对你有帮助!

【讨论】:

    【解决方案2】:

    显然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

    【讨论】:

    • 感谢 Vityata,不幸的是问题仍然存在。我检查了您之前多次链接我的相同文档,但仍然没有任何线索。除了“to_excel”还有什么其他功能可以帮助我在现有的工作表中编写熊猫系列吗?
    • @MattiaVicari - 是的,问题仍然存在,似乎 Panda 将 to_excel 视为对全新工作表的导出。
    • @Vityala 所以没有办法解决这个问题?或其他可能完成这项工作的软件包?
    • @MattiaVicari - 作为一种解决方法,您可能可以从新生成的工作表中读取值并将它们写入另一个工作表。 XlsWriter 是一个用于此的库。查看一些示例 - github.com/Vitosh/Python_personal
    猜你喜欢
    • 1970-01-01
    • 2017-07-11
    • 2019-04-09
    • 2018-07-06
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多