如何将pyfinviz筛选结果转为Pandas DataFrame并提取Tickers列?
解决方法
pyfinviz 返回的 screener.data_frames 是对应每一页数据的 Pandas DataFrame 列表,完全支持后续的 DataFrame 处理操作。要生成仅含'Tickers'列的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为一个整体 combined_df = pd.concat(screener.data_frames, ignore_index=True) # 提取仅包含'Tickers'列的DataFrame tickers_only_df = combined_df[['Tickers']] # 查看结果 print(tickers_only_df)
关键说明
pd.concat():把多页返回的DataFrame列表合并成一个完整的DataFrame,ignore_index=True用来重置行索引,避免重复索引问题。- 直接通过列名
['Tickers']提取目标列,注意列名要和pyfinviz返回的列名完全匹配(确认返回数据里的列名是'Tickers'而非其他拼写)。
内容的提问来源于stack exchange,提问作者k07
相关产品推荐
相关产品推荐

