yfinance下载数据报AttributeError: 'float' object has no attribute 'replace'的原因及解法
错误产生原因
yf.download()的第一个入参要求传入股票代码字符串/股票代码组成的可迭代对象,你代码中将ticker.info接口返回的priceToBook(市净率,是float浮点型数值)直接传入了第一个参数位置- yfinance内部处理第一个参数时,会先判断如果不是列表/集合/元组类型,就默认是字符串格式的股票代码,会调用
.replace(',', ' ')方法处理逗号分隔的多代码场景,浮点型没有replace方法,因此抛出AttributeError
解决方法
如果你本身的需求是下载微软(MSFT)的历史行情数据,有两种正确写法:
写法1:直接传入股票代码到yf.download
import yfinance as yf # 第一个参数填股票代码字符串 df = yf.download("MSFT", start="2020-1-1", end="2021-1-1") print(df)
写法2:用已经创建的Ticker对象的history方法下载
import yfinance as yf ticker = yf.Ticker("MSFT") # 如果需要用到.info的其他字段可以单独提取 # price_to_book = ticker.info["priceToBook"] df = ticker.history(start="2020-1-1", end="2021-1-1") print(df)
如果你是想要先筛选符合市净率条件的股票,再下载对应行情,需要先拿到符合条件的股票代码列表,再把代码列表传入yf.download的第一个参数即可。
内容的提问来源于stack exchange,提问作者Mirkyly
相关产品推荐
相关产品推荐

