如何将Pandas股票数据数组导出至Excel并自动设置日期?
问题解答
原始代码
import pandas as pd import yfinance as yf import pendulum from datetime import date today = str(date.today()) print(today) pd.options.display.max_rows=390 start = pendulum.parse('2022-12-5 08:30') end = pendulum.parse('2022-12-5 15:00') stock = input("Enter a stock ticker symbol: ") print(stock + " 1 Minute Data") print(start) print(yf.download(tickers= stock, interval="1m", start=start, end=end))
问题1:将Pandas数据干净导出至Excel表格
要实现干净导出,只需将yf.download的结果保存为DataFrame变量,再调用Pandas的to_excel方法即可,步骤如下:
- 替换原打印数据的代码,将数据存入变量:
# 把下载结果保存到df变量 df = yf.download(tickers=stock, interval="1m", start=start, end=end)
- 调用
to_excel导出,可自定义文件名(比如按股票代码命名):
df.to_excel(f"{stock}_1min_data.xlsx", engine="openpyxl")
注:如果未安装
openpyxl依赖,先执行pip install openpyxl安装,这是Pandas导出xlsx格式的常用引擎。
导出后的Excel会完整保留时间索引、列名和所有数据,格式规整无冗余。
问题2:用当前日期替代手动日期报错的解决
报错多因date.today()生成的字符串格式与pendulum解析逻辑不兼容,或类型混用导致。直接用pendulum自身的日期方法处理更稳妥,推荐两种实现方式:
方式1:生成当日日期字符串拼接时间后解析
# 获取当日标准格式日期字符串 today_date = pendulum.today().format('YYYY-MM-DD') # 拼接时间后生成起止时间 start = pendulum.parse(f"{today_date} 08:30") end = pendulum.parse(f"{today_date} 15:00")
方式2:直接调整当前时间到当日指定时刻
# 将当前时间调整为当日8:30 start = pendulum.now().set(hour=8, minute=30, second=0) # 将当前时间调整为当日15:00 end = pendulum.now().set(hour=15, minute=0, second=0)
注:如果需要对应美股交易时区,可在
now()中指定时区,比如pendulum.now('America/New_York')
替换后完整可运行代码:
import pandas as pd import yfinance as yf import pendulum pd.options.display.max_rows=390 # 用当前日期生成交易时段起止时间 today_date = pendulum.today().format('YYYY-MM-DD') start = pendulum.parse(f"{today_date} 08:30") end = pendulum.parse(f"{today_date} 15:00") stock = input("Enter a stock ticker symbol: ") print(f"{stock} 1 Minute Data") print(start) # 下载数据并导出 df = yf.download(tickers=stock, interval="1m", start=start, end=end) df.to_excel(f"{stock}_1min_data.xlsx", engine="openpyxl") # 可选:打印数据查看 print(df)
内容的提问来源于stack exchange,提问作者Skywalker
相关产品推荐
相关产品推荐

