【问题标题】:Python creating and appending data to new excel workbook pandasPython创建并将数据附加到新的excel工作簿熊猫
【发布时间】:2019-12-24 02:16:11
【问题描述】:

我创建了一个 webscraper,它从 chrome 驱动程序中提取数据,将其放入数据框中,并打印所有值。为了做一些趋势分析,我计划每天运行代码 5 次。因此,我想通过在每个循环中创建一个新工作表来将数据放入 excel。

我的数据采用数据框格式。我的问题源于:

使用openpyxl - 无法输入下面代码中引用的df格式

使用 pandas - 表 1 中的数据已被覆盖。我希望每张表都有一个运行时间的时间戳,但这会完全覆盖。

所以按照我的看法,我可以让 pandas 在每个运行周期中添加一个新工作簿(即添加一个新工作表并将数据附加到那里),或者我需要想办法将 df 放入 openpyxl格式。

from datetime import datetime
import pandas as pd
import numpy as np

path = r"C:\\Users\\Jacob\\Documents\\MyStuff\\weather.xlsx"

now = datetime.now()
j = now.strftime("%m-%d, %H.%M.%S")

x1 = all_weather
df1 = pd.DataFrame(x1)

writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
df1.to_excel(writer, sheet_name = str(j))
writer.save()
writer.close()

OR

book = load_workbook('C:\\Users\\Jacob\\Documents\\MyStuff\\weather.xlsx')
now = datetime.now()
j = now.strftime("%m-%d, %H.%M.%S")
sheet = book.create_sheet(str(j))
sheet.append(weather_df)

使用openpyxl时

TypeError: Value 必须是列表、元组、范围或生成器,或字典。提供的价值是

使用熊猫时 工作表每次都会被覆盖。

【问题讨论】:

    标签: python excel pandas selenium


    【解决方案1】:

    我个人推荐使用xslxwriter 而不是openpyxl。

    但是您应该使用 pandas to_excel() 而不是使用另一个模块创建一个新工作表并将数据框附加到该工作表。所以它看起来更像

    weather_df.to_excel("path_to_excel_file.xlsx",sheet_name = "sheet name here")

    【讨论】:

    • 感谢您在这里的洞察力。不幸的是,这导致了我最初的问题,我没有创建新工作表,而是覆盖现有工作表。我想要熊猫添加一个新工作表并过去其中的信息,然后保存。所以工作簿每天会添加 5 张新工作表。
    • 不确定你是否解决了这个问题,但是当我在谷歌上搜索“pandas add sheet to existing excel”时,我发现了其他一些关于这个问题的堆栈溢出帖子,希望这个有帮助吗? stackoverflow.com/questions/42370977/…
    猜你喜欢
    • 1970-01-01
    • 2020-10-13
    • 2020-01-15
    • 2019-01-25
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    相关资源
    最近更新 更多