You need to enable JavaScript to run this app. 如何用Pandas遍历CSV行调用CanvasAPI批量获取Canvas用户名
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas遍历CSV行调用CanvasAPI批量获取Canvas用户名

问题核心

canvas.get_user() 仅支持传入单个用户ID的整数类型值,你之前三次尝试传入的参数均不符合接口要求,才会触发各类报错:

  • 第一次尝试:自定义的user_id()函数无返回值,默认返回None,传入接口触发类型错误
  • 第二次尝试:传入的df['user_id'][0:5]是多值组成的Pandas Series序列,不是单值,接口无法识别
  • 第三次尝试:自定义函数无返回值得到None,转数值后得到NaN,同样不符合接口参数要求

正确实现代码

方案1:遍历打印所有用户信息

from canvasapi import Canvas
import pandas as pd

# 此处补充你自己的Canvas实例化代码(你之前单条调用正常,已有对应的API_URL、API_KEY配置)
# canvas = Canvas(你的API地址, 你的API密钥)

df = pd.read_csv("Test2.csv")

# 逐行遍历user_id调用接口
for uid in df['user_id']:
    print(canvas.get_user(uid))

方案2:把结果存回表格导出

如果你需要把拉取到的信息保存下来,可以直接用Pandas的apply方法批量处理,最后导出新CSV:

# 全量拉取用户信息存到新列
df['full_info'] = df['user_id'].apply(lambda x: str(canvas.get_user(x)))

# 也可以拆分出单独的姓名字段和ID字段
df['api_return_name'] = df['full_info'].str.split(' \(', expand=True)[0]
df['api_return_id'] = df['full_info'].str.split(' \(', expand=True)[1].str.strip(')')

# 导出结果到本地
df.to_csv("user_result.csv", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 22:06:03