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

如何迭代处理API返回数据向pandas DataFrame追加且不覆盖原有索引

问题原因

你第一次尝试出错的核心是:df["Strike Price"] = xxx 是对整个Strike Price列做全局赋值,每次循环都会把整列的值替换为当前的单个行权价,自然只会保留最后一次循环的结果。
另外你目前的临时方案存在参数错误:pd.Series()的第一个参数是数据序列,第二个是索引,你逐位传20个行权价的写法,实际上只会把第一个行权价作为Series的值,后面19个都会被当成索引,最终生成的Series只有1条数据,不符合预期。


最优解决方案

不需要循环,也不需要手动拼接Series,直接用列表推导式批量提取所有行权价,一次性生成DataFrame即可:

import pandas as pd

# 批量提取所有Call的行权价到列表
strike_list = [item['Call']['strikePrice'] for item in ochain['OptionChainResponse']['OptionPair']]

# 直接构造DataFrame,后续要加其他列只需在字典中新增键值对即可
df = pd.DataFrame({
    "Strike Price": strike_list
})

如果需要提取更多字段(比如Put的相关数据),只需新增对应的列表推导式即可,示例:

df = pd.DataFrame({
    "Strike Price": [item['Call']['strikePrice'] for item in ochain['OptionChainResponse']['OptionPair']],
    "Call最新成交价": [item['Call']['lastPrice'] for item in ochain['OptionChainResponse']['OptionPair']],
    "Put最新成交价": [item['Put']['lastPrice'] for item in ochain['OptionChainResponse']['OptionPair']]
})

概念性处理指导

处理嵌套API响应转DataFrame的通用逻辑:

  • 优先把嵌套结构拍平成等长的字典/列表序列,再一次性传入Pandas构造器,尽量避免逐行/逐元素操作Pandas对象,既减少出错概率,也能获得更高的执行效率
  • 不要手动按索引取单个元素拼接数据,只要目标字段的层级结构一致,直接用列表推导式批量提取是最简洁的方案
  • 如果确实需要逐行处理(比如有复杂的字段判断逻辑),可以用df.loc[行索引, 列名]逐行赋值,不要直接对整列赋值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:24:03