使用Pandas Data Reader及yfinance获取特斯拉金融数据遇报错求助
问题解决:Pandas Data Reader与Yfinance适配报错
问题原因分析
第一个报错(
AttributeError: 'NoneType' object has no attribute 'group')
Pandas Data Reader已停止维护Yahoo Finance数据源,Yahoo API接口变更后,pdr.get_data_yahoo()无法正常获取数据返回None,进而触发该错误。另外你输入的股票代码TSLR有误,特斯拉的正确代码是TSLA,这也会导致数据获取失败。第二个报错(
AttributeError: module 'yfinance' has no attribute 'pdr_override')
Yfinance版本更新后,pdr_override()的调用方式发生变化,旧写法已失效。
解决方案
方案1:直接使用Yfinance获取数据(推荐,更稳定)
跳过Pandas Data Reader,直接用Yfinance原生方法获取数据:
import yfinance as yf # 获取特斯拉(正确代码TSLA)的历史数据,period可指定时间范围(如"1y"=1年,"max"=全部历史) tsla_data = yf.Ticker("TSLA").history(period="max") # 查看前5行数据 print(tsla_data.head())
方案2:适配Pandas Data Reader使用Yfinance
如果需要保留Pandas Data Reader的语法,使用以下正确适配代码:
import pandas as pd from pandas_datareader import data as pdr from yfinance import pdr_override # 启用Yfinance对Pandas Data Reader的覆盖 pdr_override() # 获取特斯拉数据 df = pdr.get_data_yahoo("TSLA") print(df.head())
内容的提问来源于stack exchange,提问作者Ajay kumar
相关产品推荐
相关产品推荐

