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

处理KeyError:marketCap列无数据时填充Null并让代码持续运行

解决yahooquery获取股票数据时的KeyError问题

针对你遇到的KeyError: "['marketCap'] not in index"错误,核心原因是部分股票的返回数据中没有marketCap字段,导致DataFrame缺少对应列。下面是修改后的代码,既能自动填充空值,又能保证程序不中断:

import pandas as pd
from yahooquery import Ticker

symbols = ['MSFT','GOOG','AAPL'] # 替换为你的75000+代码列表
header = ["regularMarketPrice", "marketCap"]

for tick in symbols:
    try:
        faang = Ticker(tick)
        price_data = faang.price
        
        # 处理无返回数据的情况
        if not price_data:
            df = pd.DataFrame(index=[tick], columns=header)
        else:
            df = pd.DataFrame(price_data).T
            # 强制对齐所需列,缺失列自动填充NaN
            df = df.reindex(columns=header)
        
        # 追加到CSV文件
        df.to_csv('output.csv', mode='a', index=True, header=False, columns=header)
    
    # 捕获所有异常,避免单个股票出错中断整个循环
    except Exception as e:
        print(f"处理代码 {tick} 时出错: {str(e)}")
        # 可选:出错时写入空值行,保证数据完整性
        error_row = pd.DataFrame([[pd.NA, pd.NA]], index=[tick], columns=header)
        error_row.to_csv('output.csv', mode='a', index=True, header=False, columns=header)

关键优化点

  • 异常捕获:用try-except包裹单条股票的处理逻辑,某只股票出错时仅打印错误信息,程序继续运行
  • 列对齐:使用reindex(columns=header)确保DataFrame始终包含你需要的列,缺失字段自动填充NaN
  • 空数据处理:提前检查price_data是否为空,避免空字典转DataFrame时出现异常
  • 可选错误行写入:出错时主动写入空值行,保证输出CSV的行数与股票代码数量对应,方便后续核对

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:01:17