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

使用Finviz创建含股票代码的Pandas DataFrame时遇TypeError求助

解决提取股票代码DataFrame的TypeError错误

错误原因

报错TypeError: 'int' object is not subscriptable是因为screener.data_frames列表中混入了整数类型元素(大概率是分页请求返回的状态码),导致尝试用df['Tickers']索引整数对象时触发错误。

修复方案

方案1:过滤无效元素

遍历data_frames时,仅处理DataFrame类型的有效数据:

from pyfinviz.screener import Screener
import pandas as pd

options = [Screener.IndustryOption.STOCKS_ONLY_EX_FUNDS, 
           Screener.AnalystRecomOption.STRONG_BUY_1]
screener = Screener(filter_options=options, view_option=Screener.ViewOption.VALUATION,
                    pages=[x for x in range(1, 4)])
# 只保留DataFrame类型的元素
t_list = [df['Tickers'] for df in screener.data_frames if isinstance(df, pd.DataFrame)]    
tickers_df = pd.concat(t_list).reset_index(drop=True)    
print(tickers_df)

方案2:直接使用合并后的数据

利用Screener对象的data属性,它会自动合并所有分页的有效数据,无需手动遍历拼接:

from pyfinviz.screener import Screener
import pandas as pd

options = [Screener.IndustryOption.STOCKS_ONLY_EX_FUNDS, 
           Screener.AnalystRecomOption.STRONG_BUY_1]
screener = Screener(filter_options=options, view_option=Screener.ViewOption.VALUATION,
                    pages=[x for x in range(1, 4)])
# 直接从合并后的DataFrame提取股票代码列
tickers_df = screener.data['Tickers'].reset_index(drop=True)
print(tickers_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:22:53