使用Pandas DataReader获取Yahoo数据时遇格式匹配错误求助
解决Pandas DataReader + yfinance获取Yahoo数据的ValueError问题
这个错误的核心原因是yfinance的pdr_override()会修改pandas_datareader.DataReader的参数逻辑:原本的参数顺序是(标的代码, 数据源, 起始时间, 结束时间),但启用override后,数据源参数会被忽略,如果你还传'yahoo',它会被错误识别成时间参数,导致格式不匹配的报错。
修正后的代码
import pandas_datareader as data import yfinance as yf import datetime yf.pdr_override() start = datetime.datetime(2020, 1, 1) end = datetime.datetime(2023, 1, 1) # 移除第二个参数'yahoo',yfinance会自动处理数据源 df = data.DataReader('MSFT', start, end) print(df)
额外注意事项
- 确保你的
yfinance和pandas_datareader是最新版本,避免兼容性问题:pip install --upgrade yfinance pandas_datareader - 也可以直接使用yfinance原生接口获取数据,逻辑更直观:
df = yf.download('MSFT', start=start, end=end)
内容的提问来源于stack exchange,提问作者Nima
相关产品推荐
相关产品推荐

