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

在循环获取API数据时,如何为Pandas DataFrame添加id列?

解决方案:为每个DataFrame添加对应ID标识列

你不需要用data.apply()来实现这个需求——直接给DataFrame新增一列并赋值当前循环的id即可,这是最简洁高效的方式。之前用apply失败是因为它的用途是对行/列执行自定义函数,而这里只需要给整列设置固定值,完全没必要用它。

另外注意原代码存在两个小问题,一并修正:

  • offets是拼写错误,应该是offsets
  • 循环中直接修改base_url会导致后续请求的URL不断累加(比如第一次循环后base_url变成了基础URL+id+页码,第二次循环会在这个基础上再叠加),建议用临时变量拼接当前请求的URL。

修正后的核心循环代码如下:

# 先把原始基础URL存起来,避免循环中被修改
original_base_url = "你的基础API地址"  # 例如 "https://api.example.com/items/"

for page in offsets:
    # 用原始URL拼接当前请求的完整地址
    current_url = f"{original_base_url}{id}{page}"
    response = requests.get(current_url, auth=auth)  # 原代码多了一个多余的右括号,已移除
    output_from_api = response.json()
    raw_data.append(output_from_api)
    
    data = pd.DataFrame(output_from_api['elements'])
    # 新增一列并填充当前循环对应的id
    data['source_id'] = id  # 列名可以根据需求自定义,比如直接叫'id'
    dataframes_contact.append(data)

效果说明

每个循环生成的DataFrame都会新增一列(比如source_id),该列的所有行值都等于当前处理的id。后续你如果用pd.concat(dataframes_contact)合并所有DataFrame,就能通过这一列快速区分不同ID对应的数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:54:32