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

使用iterrows()遍历CSV调用API时出现“index 1 is out of bounds for axis 0 with size 1”错误的原因

问题分析与解决方案

错误原因拆解

你遇到的index 1 is out of bounds for axis 0 with size 1错误,核心是两个逻辑问题导致的:

  1. 错误的ID取值方式
    在iterrows()循环里,index是DataFrame的行号(从0开始递增),而row是对应行的Series对象,仅包含OBJEKT_ID这一列。当循环到第二行(index=1)时,你用row[index]取值,相当于尝试获取Series的第1个位置元素,但Series只有1列(size=1),直接触发索引越界。正确的姿势是通过列名row['OBJEKT_ID']获取当前行的ID。

  2. 文件写入的覆盖问题
    你的代码每次循环都新建空DataFrame,调用to_csv()时默认用覆盖模式(mode='w'),就算没报错,最终文件也只会保留最后一次循环的结果,根本无法累加所有数据。

修正后的完整代码

下面是调整后的代码,解决了上述问题,同时优化了请求稳定性和数据处理效率:

import pandas as pd
import requests
import time

# 读取原始ID列表
object_df = pd.read_csv("CSV_FILE.csv")

# 用列表存储结果,比循环新建DataFrame更高效
results = []

# 遍历每一行,忽略行索引,直接取ID列的值
for _, row in object_df.iterrows():
    objekt_id = row['OBJEKT_ID']
    try:
        # 调用API,传入正确的ID
        response = requests.get(
            f"url/{objekt_id}", headers=headers)
        response.raise_for_status()  # 主动捕获HTTP请求错误
        data = response.json()
        
        # 提取CLASS数据(假设API返回结构固定,若有变动需提前校验)
        class_result = data["features"][0]["properties"]["agande"][0]["agare"]["analyser"]
        print(f"处理ID: {objekt_id},结果: {class_result}")
        
        # 将当前结果存入列表
        results.append({
            'OBJEKT_ID': objekt_id,
            'CLASS': class_result
        })
        
        # 控制请求频率:5000次/分钟 ≈ 每0.012秒一次,留一点缓冲避免触发限流
        time.sleep(0.013)
        
    except Exception as e:
        # 捕获异常,避免单个请求失败导致整个程序中断
        print(f"处理ID {objekt_id}时出错: {str(e)}")
        # 可以标记错误ID,方便后续排查
        results.append({
            'OBJEKT_ID': objekt_id,
            'CLASS': 'PROCESS_ERROR'
        })

# 所有数据处理完成后,统一写入CSV
result_df = pd.DataFrame(results)
result_df.to_csv("collected_data.csv", index=False)
print("所有数据处理并写入完成!")

额外优化建议

  • 分批写入避免内存溢出:15万条数据全部存在列表里会占用不少内存,可以每处理1000条就追加写入一次文件,然后清空列表。
  • 添加API重试机制:用tenacity这类库实现自动重试,应对网络波动或API临时限流的情况。
  • 校验API返回结构:在提取数据前先检查JSON的键是否存在,避免因API返回格式变化导致的KeyError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 13:17:35