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

使用yfinance遍历股票列表时while循环仅获取首个标的,如何解决?

问题原因及修正方案

核心问题1:缩进错误导致逻辑混乱

你的代码里counter += 1没有缩进在while循环的代码块内,这会让counter的值永远停留在初始的0,while counter <= len(symbols)的条件永远成立,形成死循环。更关键的是,这个while循环完全多余——你已经用for循环做遍历了,没必要嵌套while。

核心问题2:遍历对象错误

pd.read_csv返回的是DataFrame对象,直接for symbol in symbols遍历的是DataFrame的列名,而不是你想要的股票代码列表。你需要明确指定股票代码所在的列(比如假设列名为symbol),把列数据转换成可遍历的列表。

修正后的代码示例

import pandas as pd
import yfinance as yf

# 读取股票列表,假设代码列名为"symbol"
symbols = pd.read_csv("symbol_list_short.csv")
# 提取股票代码列转为列表
symbol_list = symbols["symbol"].tolist()

for symbol in symbol_list:
    stock = yf.Ticker(symbol)
    try:
        # 先判断pegRatio是否存在且不为空
        peg_ratio = stock.info.get("pegRatio")
        if peg_ratio is not None:
            print(f"{stock.info['symbol']} : {peg_ratio}")
    except Exception:
        # 捕获其他可能的异常,避免单个股票出错中断遍历
        pass

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:05:46