【问题标题】:Python: Save dataframe to excel (win32.com)Python:将数据框保存到 excel (win32.com)
【发布时间】:2022-01-14 11:26:04
【问题描述】:

我有一个代码,可以将来自 yahoo Finance 的数据下载到 df 以获取股票列表。比我为每只股票创建新的电子表格。但我无法将数据从 df 复制到此电子表格。

n=number_of_stocks
m = 0
while n > 0:
    x = Input_Stock_Names[m]
    m+=1
    n-=1
    df = pdr.get_data_yahoo(x,starting_date,ending_date)
    df = df.reset_index()
    
    ExcelWrksht = ExcelWrkbook.Worksheets.Add()
    ExcelWrksht.Name = x
    ExcelWrksht = ExcelWrkbook.Worksheets(x)

当代码运行时,excel 文件也是打开的。

【问题讨论】:

  • 是否有任何错误信息或您需要什么帮助?为了帮助您解决问题,我需要了解更多关于股票数据的信息,如果那里有问题或其他地方有问题。
  • DataFrame 中的数据是什么样的?您只是想将数据放入电子表格,还是电子表格还做其他事情?电子表格是否已包含数据?
  • @DS_London DataFrame 中的数据是什么样的? - 类'pandas.core.frame.DataFrame'; 7 列(1-st datetime64[ns],其他 float64 )行数可能会有所不同。我只是想将数据添加到新的空电子表格中。
  • 如果您只想将 DataFrame 写入一个新的 Excel 文件,那么 win32com 是多余的。而是使用 pandas 中已经支持的 Excel 文件,通过 ExcelWriter 类:pandas.pydata.org/docs/reference/api/pandas.ExcelWriter.html 这只是以 Excel 格式写入 .xlsx 文件,不需要运行 Excel 应用程序,因此会快得多。跨度>

标签: python excel dataframe win32com


【解决方案1】:

如果任务是简单地存储下载的数据,那么使用win32com 就是过度设计。只需使用pandas 中的工具以.xlsx 格式写入Excel 文件:

import pandas as pd
import yfinance as yf
from datetime import date,timedelta

#90 days of history from today
end_date = date.today()
start_date = end_date - timedelta(days=90)

Input_Stock_Names = ['AAPL','TSLA','MSFT']

with pd.ExcelWriter('c:\\somepath\\stocks.xlsx',mode='w') as ew:
    for stock in Input_Stock_Names:
        df = yf.download(stock,start=start_date,end=end_date)
        df.to_excel(ew,stock) 

这将创建一个新的 Excel 文件,每只股票一张。

win32com 允许您“驱动” Excel,并且几乎可以执行您打开 Excel 应用程序所做的所有操作。但是,它相对较慢:必须启动(和关闭)Excel 应用程序,并且所有数据和命令必须跨越“进程边界”从一个进程 (python) 到另一个进程 (Excel)。

使用ExcelWriter,您只需将数据写入.xlsx 格式的文件,以便Excel 稍后可以读取它。如果您只想存储数据,这比使用win32com 高效得多。

【讨论】:

    猜你喜欢
    • 2011-09-14
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 2018-09-11
    • 2022-01-05
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    相关资源
    最近更新 更多