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

pandas DataFrame导出CSV无法追加仅保存最后一条期权数据求助

问题排查与修复方案

核心错误原因

  • 你将DataFrame构造、CSV写入的逻辑放在了for循环外部,循环过程中chain变量会被每次新请求的股票期权数据覆盖,循环结束后仅保留最后一只股票的chain值,最终也只会写入这部分数据。

其他可优化的问题点

  • 异常捕获逻辑无效:except块中仅写了ValueError,既没有抛出异常也没有做跳过、日志记录,请求出错时不会有任何提示,也不会终止当前循环。
  • 追加写入时设置header=True会导致每写入一只股票的数据就重复生成一次表头,最终CSV文件里会穿插多个表头行。
  • pd.set_option不需要放在循环里重复执行,放到循环外部执行一次即可。

修正后代码

import pandas as pd
import os

# 全局配置只需要执行一次
pd.set_option('display.max_columns', None)
stocks = ['AAPL','AMZN']
csv_path = r'C:\Users\etcetc'

# 首次写入前如果文件存在可以先删除,避免重复追加旧数据,不需要的话可以删掉以下两行
if os.path.exists(csv_path):
    os.remove(csv_path)

for stock in stocks:
    try:
        chain = options.get_options_chain(stock, 'October 15, 2021')
        print(f"{stock} 期权数据获取成功")
        # 构造DataFrame和写入逻辑放到循环内部
        df = pd.DataFrame(chain, columns=['Contract Name', 'Last Trade Date', 'Strike', 'Last Price', 'Bid', 'Ask', 'Change', 'Volume', 'Implied Volatility'])
        # 仅首次写入时加表头,后续追加不加
        header = not os.path.exists(csv_path)
        df.to_csv(csv_path, index=False, header=header, mode='a')
    except Exception as e:
        print(f"{stock} 数据获取失败,错误信息:{e}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:54:03