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

使用Pandas Datareader获取Morningstar数据仅返回5天价格的问题求助

解决Morningstar数据源仅返回5天股票数据的问题

嘿,作为Python新手碰到这种数据源限制的问题确实头疼,我来帮你梳理下可能的解决办法:

问题原因分析

你遇到的情况大概率是pandas_datareader对Morningstar数据源的适配存在局限,或者Morningstar的公开API本身就对免费用户的历史数据获取做了天数限制,导致无论设置多大的日期范围,都只能拿到最近几天的数据。

方案一:调整pandas_datareader版本并优化代码

  1. 先检查并升级你的pandas_datareader到兼容Python3.6的稳定版本(比如0.8.1,更高版本可能不再支持Python3.6),在终端执行:
pip install pandas_datareader==0.8.1
  1. 优化代码,正确解析Morningstar返回的多层索引结构:
import datetime
import pandas_datareader.data as web

start = datetime.datetime(2016, 1, 1)
end = datetime.datetime(2016, 1, 10)
# 获取数据时适配Morningstar的多层索引结构
df = web.DataReader("AAPL", 'morningstar', start, end)
# 直接提取目标股票的数据并整理索引
df = df.xs('AAPL', level='Symbol')
print(df.head())

不过要注意,即使这样调整,Morningstar的免费数据源可能还是有数据范围限制,不一定能拿到你想要的完整历史数据。

方案二:换用更稳定的yfinance数据源

既然Yahoo旧数据源失效了,yfinance是官方推荐的替代方案,它能稳定获取完整的历史股票数据,操作也很简单:

  1. 安装兼容Python3.6的yfinance版本:
pip install yfinance==0.1.67
  1. 使用yfinance重写你的代码:
import datetime
import yfinance as yf

start = datetime.datetime(2016, 1, 1)
end = datetime.datetime(2016, 1, 10)
# 获取AAPL的历史数据
df = yf.download("AAPL", start=start, end=end)
print(df.head())

这个方案的稳定性和数据完整性都比Morningstar好很多,更适合新手使用。

如果你尝试后还有问题,可以告诉我你的pandas_datareader版本或者运行时的报错信息,我再帮你排查~

内容的提问来源于stack exchange,提问作者Verdi Esteban Rey Blanco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:45:27