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

使用Pandas DataReader获取Yahoo数据时遇TypeError及ValueError求助

解决Pandas DataReader获取Yahoo数据失败的问题

错误原因分析

第一个错误:TypeError: download() got multiple values for argument 'start'

调用web.DataReader('AAPL', 'Yahoo', start=start_date, end=end_date)时,pandas_datareader的Yahoo接口内部调用yfinance的download函数时,位置参数与关键字参数混合传递导致start被多次赋值,引发参数冲突。

第二个错误:ValueError("time data 'yahoo' does not match format '%Y-%m-%d'")

web.DataReader('AAPL', 'yahoo', start_date, end_date)的参数顺序错误,当前版本的web.DataReader不支持(name, data_source, start, end)的参数顺序,程序将'yahoo'误认为起始日期字符串,导致日期解析失败。

解决方案

方法1:直接使用yfinance库(推荐)

pandas_datareader的Yahoo数据源现已依赖yfinance,直接调用yfinance更稳定可靠:

import yfinance as yf
import datetime as dt

start_date = dt.datetime(2020, 1, 1)
end_date = dt.datetime(2021, 1, 1)

# 获取AAPL股票数据
aapl_df = yf.download('AAPL', start=start_date, end=end_date)
# 查看最后5行数据
print(aapl_df.tail())

方法2:修正pandas_datareader的调用方式

若坚持使用pandas_datareader,可通过以下两种方式调整参数传递:

import pandas_datareader.data as web
import datetime as dt

start_date = dt.datetime(2020, 1, 1)
end_date = dt.datetime(2021, 1, 1)

# 方式A:用关键字参数明确指定所有参数
aapl_df = web.DataReader(name='AAPL', data_source='yahoo', start=start_date, end=end_date)

# 方式B:按正确参数顺序传递(name, start, end, data_source)
aapl_df = web.DataReader('AAPL', start_date, end_date, 'yahoo')

print(aapl_df.tail())

前置依赖安装

确保已安装所需依赖库:

pip install pandas_datareader yfinance

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:08:27