You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

yfinance无法获取请求的完整股票数据范围问题求助

解决yfinance返回天数少于请求天数的问题

这是正常现象——股票市场只在交易日产生行情数据,周末、法定节假日休市时不会有新数据。通常一年的交易日约250天,10年累计约2500天,和你拿到的251、2516天完全匹配。

如果需要包含所有日历天(包括休市日)的数据,需要手动填充缺失日期的内容,以下是基于你代码的修改方案:

import yfinance as yf
import pandas as pd

msft = yf.Ticker("T")
# 获取原始交易日数据
hist = msft.history(period="1y")

# 生成请求周期内的完整日历天索引
full_date_range = pd.date_range(start=hist.index[0], end=hist.index[-1], freq='D')

# 将原始数据对齐到完整日历天,用前一天的有效值填充休市日数据
hist_full = hist.reindex(full_date_range).fillna(method='ffill')

historical_market_data = []
days = 0
# 遍历填充后的完整数据集
for idx, row in hist_full.iterrows():
    days += 1
    historical_market_data.append([row['High'], row['Low'], row['Open'], row['Close'], days])

# 输出结果
for i in historical_market_data:
    print(f"High: {i[0]}, Low: {i[1]}, Open: {i[2]}, Close: {i[3]}, Day: {i[4]}")

关键步骤说明:

  • pd.date_range:生成从数据起始日到结束日的所有日历天,freq='D'指定按天生成
  • reindex:将原始数据的索引替换为完整日历天,休市日的行自动填充为NaN
  • fillna(method='ffill'):用前一个交易日的数据填充休市日(符合“休市时价格不变”的逻辑),你也可以根据需求调整:
    • bfill:用下一个交易日的数据填充
    • 移除fillna调用:保留NaN值,后续自行处理缺失数据

内容的提问来源于stack exchange,提问作者Argetlam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 09:18:14