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

如何用Python结合Pandas读取CSV批量生成API调用?

针对批量API调用脚本的改进建议

先直接点出你当前脚本里的几个关键问题:

  1. 循环取数错误:df['product_id']和df['title']取的是整列数据,而非当前循环行的单条值,这会导致请求体格式错误。
  2. 语法问题:循环缩进不正确,末尾多了一个冗余的闭合大括号。
  3. 缺少核心请求逻辑:脚本仅定义了请求体,没有实际发送HTTP请求的代码,无法完成API调用。

循环选择:用for循环更合适,没必要用while

Pandas提供了更优雅的行遍历方式,比for i in range(len(df))更直观且易维护:

  • df.iterrows():返回每行的索引和Series对象,适合需要修改行数据的场景
  • df.itertuples():返回命名元组,性能比iterrows()更优,适合只读场景

修正后的完整脚本示例

import pandas as pd
import requests
import time

api_token = "my_token"
base_url = "https://your-api-domain.com"  # 补充你的API域名
df = pd.read_csv('edited_csv.csv')

# 遍历每行数据
for _, row in df.iterrows():
    endpoint = f"{base_url}/api/mystore/products"
    # 构造单条请求体,取当前行的product_id和title
    request_body = {
        "product_id": row['product_id'],
        "title": row['title'],
        "my_discount_type": "percentage",
        "my_discount_amount": 15,
        "store": "Store3",
        "versions": "Black/White/Red"
    }
    
    # 设置API认证头(根据实际要求调整)
    headers = {
        "Authorization": f"Bearer {api_token}",
        "Content-Type": "application/json"
    }
    
    try:
        # 发送POST请求
        response = requests.post(endpoint, json=request_body, headers=headers)
        # 检查请求是否成功
        response.raise_for_status()
        print(f"产品{row['product_id']}创建成功")
        # 避免请求过于频繁触发限流,添加间隔
        time.sleep(1)
    except requests.exceptions.RequestException as e:
        print(f"产品{row['product_id']}创建失败: {str(e)}")

额外优化建议

  1. CSV处理环节简化:你之前的title格式化可以合并为一行代码,同时避免保存CSV时生成多余索引列:

    df['title'] = df['title'].str.replace('"', "''").apply(lambda x: f'"{x}"')
    df.to_csv('edited_csv.csv', index=False)
    
  2. 批量处理最佳实践:

    • 先用1-2条测试数据跑通流程,确认无误后再全量执行
    • 引入logging模块记录详细日志,方便后续排查问题
    • 如果API支持批量创建接口,可将多条数据打包为一个请求,减少请求次数提升效率
    • 添加重试机制(比如用tenacity库),处理网络波动或临时限流导致的请求失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:27:27