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

使用yfinance下载股票基本面数据时遇TypeError问题求助

解决yfinance获取股票基本面数据的TypeError问题

我尝试使用yfinance库从Yahoo Finance下载股票基本面数据,初始代码如下:

import pandas as pd 
import yfinance as yf 
symbol = 'AAPL'
ticker = yf.Ticker(symbol)
ticker.income_stmt

运行后出现错误:TypeError: string indices must be integers。我尝试了另一种通过ticker.info转换为DataFrame的方案:

import pandas as pd

tickers_list = ["aapl"] # example list
tickers_data= {} # empty dictionary
for ticker in tickers_list:
    ticker_object = yf.Ticker(ticker)

    #convert info() output from dictionary to dataframe
    temp = pd.DataFrame.from_dict(ticker_object.info, orient="index")
    temp.reset_index(inplace=True)
    temp.columns = ["Attribute", "Recent"]
    
    # add (ticker, dataframe) to main dictionary
    tickers_data[ticker] = temp

tickers_data

但问题仍未解决,恳请帮助。


修复方案

1. 升级yfinance到最新版本

旧版本yfinance的API解析逻辑存在bug,是引发这类错误的常见原因,先执行升级:

pip install --upgrade yfinance

2. 调整利润表的获取方式

新版本中income_stmt返回DataFrame,但偶尔会因数据加载问题返回异常内容,建议增加空值判断,或切换到季度数据:

import pandas as pd 
import yfinance as yf 

symbol = 'AAPL'
ticker = yf.Ticker(symbol)

# 尝试获取年度利润表
annual_income = ticker.income_stmt
if not annual_income.empty:
    print(annual_income)
else:
    # 若年度数据为空,获取季度利润表
    print(ticker.quarterly_income_stmt)

3. 增加ticker.info的类型校验

如果Yahoo Finance返回的不是预期的字典(比如错误字符串),会导致DataFrame转换失败,先校验返回类型:

import pandas as pd

tickers_list = ["aapl"]
tickers_data= {}

for ticker in tickers_list:
    ticker_object = yf.Ticker(ticker)
    info_dict = ticker_object.info
    
    # 确认返回的是字典再转换
    if isinstance(info_dict, dict):
        temp = pd.DataFrame.from_dict(info_dict, orient="index")
        temp.reset_index(inplace=True)
        temp.columns = ["Attribute", "Recent"]
        tickers_data[ticker] = temp
    else:
        print(f"{ticker}信息获取失败,返回内容:{info_dict}")

print(tickers_data)

4. 排查网络与请求限制

Yahoo Finance会对频繁请求做限制,若升级和代码调整后仍失败,可尝试:

  • 更换网络环境重试
  • 批量获取时增加请求间隔

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:25:38